...
Luokkamallit
...
(Templates)
...
Template
...
on
...
luokan
...
malli,
...
josta
...
kääntäjä
...
kääntää
...
olion,
...
joka
...
on
...
haluttua
...
tyyppiä.
...
Siten
...
esimerkiksi
...
pinoa
...
ei
...
tarvitse
...
tehdä
...
erikseen
...
kokonaisluvuille
...
ja
...
reaaliluvuille,
...
kuten
...
seuraava
...
esimerkki
...
osoittaa.
...
Malliluokan
...
esittely
...
Templaten
...
eli
...
mallin
...
esittely
...
näyttää
...
tavallisen
...
luokan
...
esittelyltä
...
paitsi,
...
että
...
siinä
...
on
...
sana
...
template.
...
Seuraavassa
...
on
...
malli
...
pinolle.
Code Block |
---|
} template <class T> class Stack { public: Stack(int = 10) ; ~Stack() { delete [] stackPtr; } int push(const T&); int pop(T&) ; int isEmpty()const { return top == -1; } int isFull() const { return top == size - 1; } private: int size; // elementtien määrä pinossa int top; T* stackPtr; }; //muodostin template <class T> Stack<T>::Stack(int s) { size = s > 0 && s < 1000 ? s : 10 ; top = -1 ; // initialize stack stackPtr = new T[size] ; } // uusi arvo pinoon template <class T> int Stack<T>::push(const T& item) { if (!isFull()) { stackPtr[++top] = item ; return 1; // pinon täytö ok } return 0; // ei mahdu enaa } // elementti pinosta template <class T> int Stack<T>::pop(T& popValue) { if (!isEmpty()) { popValue = stackPtr[top--] ; return 1 ; // ok } return 0 ; // ei onnistu, pino on tyhja } {code} |
Esimerkki
...
pinon
...
käytöstä
Code Block |
---|
} #include <iostream> #include "stack.h" using namespace std; void main() { Stack <float> FloatStack ; Stack <int> IntStack ; FloatStack fs(5) ; float f = 1.1 ; cout << "laitetaan luku reaalilukupinoon fs" << endl ; while (fs.push(f)) { cout << f << ' ' ; f += 1.1 ; } cout << endl << "Pino täynnä." << endl << endl << "Otetaan elementi pinosta" << endl ; while (fs.pop(f)) cout << f << ' ' ; cout << endl << "pino tyhjä" << endl ; cout << endl ; IntStack is ; int i = 1.1 ; cout << "laitetaan luku kokonaislukupinoon" << endl ; while (is.push(i)) { cout << i << ' ' ; i += 1 ; } cout << endl << "pino täynnä" << endl << endl << "otetaan elementti pinosta" << endl ; while (is.pop(i)) cout << i << ' ' ; cout << endl << "pino tyhjä" << endl ; } {code} |