stack
概念:stack
是一种先进后出的数据结构,也就是LIFO(last in first out) ,最后加入栈的元素将最先被取出来,在栈的同一端进行数据的插入与取出,这一段叫做“栈顶”。
特点:
- 栈中只有顶端的元素可以被外界使用,因此栈不允许有遍历行为
- 栈中进入数据称为:入栈(
push
) - 栈中弹出元素称为:出栈(
pop
)
构造函数
- stack<T> stk; // stack采用模板类实现。stack对象的默认构造形式
- stack<const stack &stack> &stk; //拷贝构造函数
赋值操作
- stack &operator=(const stack &stk); // 重载符号操作符
数据存取
- push(elem); // 向栈顶添加元素
- pop(); // 从栈顶移除第一个元素
- top(); //返回栈顶元素
其他操作
- empty(); // 判断栈是否为空
- size(); // 返回栈的大小
- swap(); //交换两个容器的元素
小结:
- 入栈:push()
- 出栈:pop()
- 返回栈顶元素:top()
- 判断栈是否为空:empty()
- 返回栈的大小:size()
【demo】:
#include <iostream>
#include <stack>
using namespace std;
void test01()
{
// 创建栈容器
stack<int> s;
// 向栈中添加元素(压栈、入栈)
s.push(10);
s.push(20);
s.push(30);
// 若栈不为空
while (!s.empty())
{
// 输出栈顶元素
cout << "栈顶元素为:" << s.top() << endl;
// 弹出栈顶元素(出栈)
s.pop();
cout << "栈的大小为:" << s.size() << endl;
cout << "栈顶元素为:" << s.top() << endl;
}
}
void test02()
{
// 创建栈容器
stack<int> s1;
// 向栈中添加元素(压栈、入栈)
s1.push(10);
s1.push(20);
s1.push(30);
stack<int> s2;
s2.push(100);
s2.push(200);
s2.push(300);
cout << "交换前" << endl;
cout << "size of s1 is : " << s1.size();
cout << "size of s2 is : " << s2.size();
s1.swap(s2);
cout << "交换后" << endl;
cout << "size of s1 is : " << s1.size();
cout << "size of s2 is : " << s2.size();
}
int main()
{
test01();
return 0;
}