堆栈是项的有限序列,满足:
1)序列中被删除、检索和修改的项只能是最近插入序列的项(栈顶)。
堆栈中的项是反时间排序存储的:后入,先出。简称LIFO。
stack类的部分方法接口(少于10个):
// vector、deque和list都可以作为stack的基础容器类。
// 堆栈的顶部是基础容器类的尾部。
template <class T, class Container = deque<T>>
class stack
{
public:
typedef T value_type;
// 保留字 explicit 只能和构造器一起使用,
// 它指示编译器不应当在构造器语句中执行自动类型转换。
explicit queue(const Container& = Cantainer());
// 堆栈为空? true : false
bool empty() const;
// 返回这个堆栈中项的数量
unsigned size() const;
// 将项 x 插入到这个堆栈的顶部(插入堆栈)
void push(const value_type& x);
// 返回对栈顶的引用(修改堆栈)
T& top();
// 返回对栈顶的常量引用(检索堆栈)
const T& top();
// 调用前栈顶的项将从这个堆栈中删除
void pop();
protected:
// 堆栈中的每个实例包含一个容器模板,缺省为 deque<T>
Container c;
};
// 部分实现
template <class