1、定义
class stack<> 实作出一个stack(也成为LIFO,后进先出),你可以使用push()将任意数量的元素置入stack中,也可以使用pop()将元素依次插入次序反序从容器移除(即后进先出)。
在<stack>中,class stack定义如下:
namespace std { template <class T, class Container = deque<T> > class stack; }
第一个template参数代表元素型别。带有默认值的第二个template参赛用来定义stack内部存放元素的实际容器,缺省采用的是deque。之所以采用deque是因为deque移除元素会释放内存,并且不用重新分配内存时复制所有元素。
例如定义一个元素型别为整数的stack:
std::stack<int> st; // integer stack
实际上,stack只是将各项操作转化为内部容器的各项调用,可以使用任何序列式容器来支持stack,只要它支持back(),push_back(),pop_back()等操作。
例如使用vector来容纳元素:
std::stack<int,std::vector<int> > st; // integer stack that uses a vector
2、核心接口
stack就三个接口函数,push(),top(),pop()。
- push()会将一个元素放入stack中。
- top()会返回stack中的栈顶元素,返回的是reference,可以就地修改值。
- pop()移除栈顶元素,无返回值。
- size()返回stack长度。
- empty()返回stack是否为空。
时间: 2024-11-04 13:38:59