c++stl stack详解
时间: 2023-10-25 18:23:42 浏览: 170
在 C++ STL 中,stack 是一个容器适配器(container adapter),它是基于另一个容器进行封装,使其具有栈(stack)的特性。stack 支持在容器顶部进行插入和删除操作,而容器的其余部分则不可访问。
stack 的底层容器可以是 vector、deque 或 list,这取决于实现。默认情况下,底层容器是 deque。
stack 的主要操作有:
1. push:将元素压入栈顶(在顶部插入一个元素)。
2. pop:将栈顶元素弹出(删除顶部元素)。
3. top:返回栈顶元素的引用(查看顶部元素的值,但不删除)。
4. empty:检查栈是否为空。
5. size:返回栈中元素的数量。
下面是 stack 的一些示例代码:
```c++
#include <iostream>
#include <stack>
using namespace std;
int main() {
stack<int> s;
// 向栈中添加元素
s.push(1);
s.push(2);
s.push(3);
// 输出栈顶元素
cout << "Top element: " << s.top() << endl;
// 弹出栈顶元素
s.pop();
// 输出栈中元素数量
cout << "Size: " << s.size() << endl;
// 判断栈是否为空
if (s.empty()) {
cout << "Stack is empty." << endl;
} else {
cout << "Stack is not empty." << endl;
}
return 0;
}
```
输出结果为:
```
Top element: 3
Size: 2
Stack is not empty.
```
在 STL 中,stack 的实现是线程不安全的,如果需要在多线程环境下使用,需要自己加锁。
阅读全文