類比代碼:
#include <iostream>#include <vector>#include <stdexcept>using namespace std;template <typename T>class Stack{private:vector<T> elems;public:void push( T const & element );void pop( );T top() const;bool empty()const{return elems.empty();}};template <typename T>void Stack<T>::push( T const &element ){elems.push_back(element);}template <typename T>void Stack<T>::pop(){if( elems.empty() ){throw out_of_range("Stack<>::pop:empty stack");}elems.pop_back();}template < typename T >T Stack<T>::top()const{if( elems.empty() ){throw out_of_range("Stack<>::top:empty stack");}return elems.back();}int main(void){ Stack<int> stck_int; stck_int.push(1); stck_int.push(2); cout << "入站順序:1,2" << endl; cout << "出站順序:" << endl; cout << stck_int.top() ; stck_int.pop(); cout.width(3); cout << stck_int.top() << endl; cout << "入站順序:A,B" << endl; cout << "出站順序:" << endl; Stack<char> stck_char; stck_char.push('A'); stck_char.push('B'); cout << stck_char.top() ; stck_char.pop(); cout.width(3); cout << stck_char.top() << endl; return 0; }
運行效果:
入站順序:1,2
出站順序:
2 1
入站順序:A,B
出站順序:
B A