Das folgende Code-Beispiel stammt aus dem Buch
Objektorientiertes Programmieren in C++
- Ein Tutorial für Ein- und Umsteiger
von Nicolai Josuttis, Addison-Wesley München, 2001
© Copyright Nicolai Josuttis 2001
#include <vector>
namespace Bsp { // ******** Beginn Namensbereich Bsp::
template <typename T, typename CONT = std::vector<T> >
class Stack {
private:
CONT elems; // Elemente
public:
Stack(); // Konstruktor
void push(const T&); // Element einkellern
T pop(); // Element auskellern
T top() const; // oberstes Element
};
// Konstruktor
template <typename T, typename CONT>
Stack<T,CONT>::Stack ()
{
// nichts mehr zu tun
}
template <typename T, typename CONT>
void Stack<T,CONT>::push (const T& elem)
{
elems.push_back(elem); // Kopie einkellern
}
template <typename T, typename CONT>
T Stack<T,CONT>::pop ()
{
if (elems.empty()) {
throw "Stack<>::pop(): der Stack ist leer";
}
T elem = elems.back(); // oberstes Element merken
elems.pop_back(); // oberstes Element auskellern
return elem; // gemerktes oberstes Element zurückliefern
}
template <typename T, typename CONT>
T Stack<T,CONT>::top () const
{
if (elems.empty()) {
throw "Stack<>::top(): der Stack ist leer";
}
return elems.back(); // oberstes Element als Kopie zurückliefern
}
} // ******** Ende Namensbereich Bsp::