stack容器
- stack是堆栈容器,是一种“先进后出”的容器。
- stack是基于deque容器而实现的容器。
- #include < stack>
stack对象的默认构造
stack采用模板类实现, stack对象的默认构造形式: stack <T> stkT;
stack <int> stkInt; //一个存放int的stack容器。
stack <float> stkFloat; //一个存放float的stack容器。
stack <string> stkString; //一个存放string的stack容器。
stack<int> s1; //默认使用deque
stack<int, vector<int>> s2; //指定使用vector
stack<int, list<int>> s3; //指定使用list
//尖括号内还可以设置指针类型或自定义类型。
stack的push()与pop()方法
stack.push(elem); //往栈头添加元素
stack.pop(); //从栈头移除第一个元素
stack<int> s1;
s1.push(1); //先入1
s1.push(2);
s1.pop(); //把元素2移出队列
s1.push(3);
while(!s1.empty()) {
cout << s1.top() << endl; //调用队尾的元素 输出: 3 1
s1.pop(); //出栈
}
stack对象的拷贝构造与赋值
stack(const stack &stk); //拷贝构造函数
stack& operator=(const stack &stk); //重载等号操作符
stack<int> s1, s2;
s1.push(1); //先入1
s1.push(2);
s1.push(3);
s2 = s1; //赋值构造函数
stack<int> s3(s1); //拷贝构造函数
stack的数据存取
stack.top(); //返回最后一个压入栈元素
stack<int> s1, s2;
s1.push(1); //先入1
s1.push(2);
s1.push(3);
s1.top() = 666; //返回最后一个入栈的元素 修改为666
while (!s1.empty()) {
cout << s1.top() << endl; //调用队尾的元素 输出: 666 2 1
s1.pop(); //出栈
}
stack的大小
stack.empty(); //判断堆栈是否为空
stack.size(); //返回堆栈的大小
if(s1.empty()){
cout<<"堆栈为空"<<endl;
}