模拟代码:
#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