C++中stack的使用方法
stack模板类(在头文件stack中声明)是一个适配器类,它给底层类(默认情况下为vector)提供了典型的栈接口。
stack模板的限制比vector多。它不仅不允许随机访问栈元素,甚至不允许遍历栈。它把使用限制在定义栈的基本操作上,即可以将压入推到栈顶、从栈顶弹出元素、查看栈顶的值、检查元素数目和测试栈是否为空。
1. 头文件包含
#include <stack>
2. 构造函数
1. //默认构造函数
stack<int> first;//创建一个空的stack
2. //复制构造函数,使用已有的stack创建新的stack
stack<int, list<int> > s1;
stack<int, list<int> > s2(s1);//利用 s1 ,创建一个以双向链表为底层容器的空堆栈对象 s2
//使用已创建的deque创建stack
deque<int> mydeque (3,100); // 包含3个元素deque
stack<int> second (mydeque); // 使用deque初始化stack
//创建vector为底层的stack,和使用已有stack初始化新的stacck
std::stack<int,std::vector<int> > third; // 使用vector创建的空stack
std::stack<int,std::vector<int> > fourth (myvector);
3. 操作
语法:
==
<=
>=
<
>
!=
所有的这些操作可以被用于堆栈. 相等指堆栈有相同的元素并有着相同的顺序。
4. 方法函数总览
1. empty() 堆栈为空则返回真
2. pop() 移除栈顶元素
3. push() 在栈顶增加元素
4. size() 返回栈中元素数目
5. top() 返回栈顶元素
5. 方法函数原型和简单解释
empty
语法:
bool empty();
如当前堆栈为空,empty() 函数 返回 true 否则返回false.
pop
语法:
void pop();
pop() 函数移除堆栈中最顶层元素。
push
语法:
void push( const TYPE &val );
push() 函数将 val 值压栈,使其成为栈顶的第一个元素。如:
stack<int> s;
for( int i=0; i < 10; i++ )
s.push(i);
size
语法:
size_type size();
size() 函数返当前堆栈中的元素数目。如:
stack<int> s;
for( int i=0; i < 10; i++ )
s.push(i);
cout << "This stack has a size of " << s.size() << endl;
top
语法:
TYPE &top();
top() 函数返回对栈顶元素的引用. 举例,如下代码显现和清空一个堆栈。
while( !s.empty() ) {
cout << s.top() << " ";
s.pop();
}