Permalink
Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
59 lines (50 sloc) 1.52 KB
/* Die folgenden Code-Beispiele stammen aus dem Buch:
* Objektorientiertes Programmieren in C++
* Ein Tutorial für Ein- und Umsteiger
* von Nicolai Josuttis, Addison-Wesley München, 2001
*
* (C) Copyright Nicolai Josuttis 2001.
* Diese Software darf kopiert, verwendet, modifiziert und verteilt
* werden, sofern diese Copyright-Angabe in allen Kopien vorhanden ist.
* Diese Software wird "so wie sie ist" zur Verfügung gestellt.
* Es gibt keine explizite oder implizite Garantie über ihren Nutzen.
*/
#include "expl.hpp"
// Definition des Funktions-Templates max()
template <typename T>
const T& max (const T& a, const T& b)
{
return (a > b ? a : b);
}
// Definition der Funktionen des Klassen-Templates Stack<>
namespace Bsp { // ******** Beginn Namensbereich Bsp::
// Konstruktor
template <typename T>
Stack<T>::Stack ()
{
// nichts mehr zu tun
}
template <typename T>
void Stack<T>::push (const T& elem)
{
elems.push_back(elem); // Kopie einkellern
}
template<typename T>
T Stack<T>::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>
T Stack<T>::top () const
{
if (elems.empty()) {
throw "Stack<>::top(): der Stack ist leer";
}
return elems.back(); // oberstes Element als Kopie zurückliefern
}
} // ******** Ende Namensbereich Bsp::