stack容器
C++的std::stack容器是一个基于适配器模板类实现的容器适配器,它提供了一种后进先出的数据结构,即栈。
特点:
1.后进先出:元素在栈容器中按照后进先出的顺序管理,最后放入的元素将会最先被取出。
2.只能从栈顶操作:stack容器只允许在栈顶进行插入和删除操作,不能在中间或底部插入或删除元素。
3.功能简单:stack容器提供的操作相对简单,只包括推入元素、弹出元素、访问栈顶元素等基本操作。
4.不支持迭代器:stack不提供迭代器接口,因此不能像序列容器(如vector和deque)那样通过迭代器进行元素访问。
5.固定大小:stack容器没有固定的大小限制,但在底层实现上可能会有一定的容量限制,需要根据需求选择合适的实现方式。
6.没有排序功能:stack容器并不对元素进行排序,元素按照插入的顺序保持在栈中。
stack容器的使用
- 加入头文件<stack>
- stack容器定义
- stack容器使用
加入头文件
#include<stack>
定义无需初始化
在使用std::stack容器时,不需要显式指定容器的大小。当向std::stack中压入元素时,如果底层容器的大小不够,它会自动调整大小来适应新增的元素。这种自动调整大小的特性使得使用std::stack容器更加方便和灵活。
#include <iostream>
#include <stack>int main()
{std::stack<int> first;return 0;
}
使用
压栈(push):使用push()函数向栈顶添加元素。
弹栈(pop):使用pop()函数移除栈顶元素,无返回值。
访问栈顶(top):使用top()函数访问但不移除栈顶元素。注意,如果栈为空,调用top()是未定义行为
empty():检查栈是否为空,返回布尔值。
size():返回栈中元素的数量。
#include <iostream>
#include <stack>int main()
{std::stack<int> in;// 压栈(Push)in.push(10);in.push(20);in.push(30);// 访问栈顶(top)std::cout << "栈顶元素:" << in.top() << std::endl;// 弹栈(pop)in.pop(); // 移除栈顶元素std::cout << "弹栈后的栈顶元素:" << in.top() << std::endl;// 输出栈中的元素std::cout << "栈中的元素:";while (!in.empty()) {std::cout << in.top() << " ";in.pop(); // 移除栈顶元素}std::cout << std::endl;return 0;
}//输出结果是
栈顶元素:30
弹栈后的栈顶元素:20
栈中的元素:20 10