#include #include #include #include template > class Stack { public: Stack() {} void push(const T& x) { items.push_back( x ); } void pop() { items.pop_back(); } T top() const { return items.back(); } bool empty() const { return items.empty(); } void print() const; private: CONTAINER items; }; template void Stack::print() const { typename CONTAINER::const_iterator ptr = items.begin(); while ( ptr != items.end() ) { std::cout << *ptr << std::endl; ++ptr; } } int main() { Stack > stk; stk.push(7); stk.push(17); stk.push(16); stk.push(8); stk.pop(); stk.print(); }