C++ stack 接口
时间: 2024-09-20 08:03:47 浏览: 35
C++标准库中的`stack`是一个容器适配器,它实现了LIFO(Last In First Out)数据结构,即后进先出的原则。`stack`接口主要包括以下几个部分:
1. **模板类** `std::stack`: 这是C++中用于实现栈的主要类,通常配合`<vector>`、`<deque>`等底层存储容器使用。
2. **构造函数**: 有几种常见的构造方式,包括默认构造(创建空栈)、通过底层容器初始化以及从其他迭代器范围初始化。
```cpp
std::stack();
std::stack(std::vector<int>);
std::stack(const std::stack<int>&);
```
3. **元素操作**:
- `push(item)`: 将元素推入栈顶。
- `pop()`: 删除并返回栈顶元素(如果存在)。
- `top() const`: 返回但不删除栈顶元素(常量版本),如果没有元素则抛异常。
- `empty() const`: 检查栈是否为空。
- `size() const`: 返回栈中元素的数量。
4. **安全性**:
- 如果尝试访问空栈或执行操作如`pop()`而栈为空,会抛出`std::out_of_range`异常。
```cpp
std::stack<int> myStack;
myStack.push(10); // 添加元素
int topElement = myStack.top(); // 查看顶部元素(但不删除)
if (not myStack.empty()) {
int popped = myStack.pop(); // 删除并获取栈顶元素
}
```
阅读全文