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;
}