c++stack使用
时间: 2024-01-13 12:02:31 浏览: 78
C++中的stack是一个容器适配器,它提供了一种后进先出(LIFO)的数据结构。可以使用STL中的stack头文件来使用它。下面是一个简单的例子:
```c++
#include <iostream>
#include <stack>
using namespace std;
int main() {
stack<int> s;
s.push(1);
s.push(2);
s.push(3);
cout << "Stack size: " << s.size() << endl;
while (!s.empty()) {
cout << s.top() << endl;
s.pop();
}
return 0;
}
```
输出:
```
Stack size: 3
3
2
1
```
在这个例子中,我们首先创建了一个空的stack对象s。然后我们使用push()函数将三个整数1、2和3压入栈中。接下来,我们使用size()函数获取栈的大小,并使用top()函数获取栈顶元素。最后,我们使用pop()函数弹出栈顶元素。
相关问题
C++ stack 接口
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(); // 删除并获取栈顶元素
}
```
C++ stack用法
在C++中,标准库提供了一个名为`std::stack`的数据结构,它是STL(Standard Template Library)的一部分,用于处理栈的行为。`std::stack`模板支持动态大小调整,可以存储不同类型的数据,通常基于`std::deque`(双端队列)底层实现。
以下是`std::stack`的一些基本用法:
1. 创建栈:
```cpp
#include <stack>
std::stack<int> myStack;
```
这里创建了一个只包含整数的空栈。
2. 压栈(push):
```cpp
myStack.push(5);
```
向栈顶添加元素5。
3. 弹栈(pop):
```cpp
int topValue = myStack.top(); // 获取栈顶元素
myStack.pop(); // 删除并返回栈顶元素
```
`top()`方法获取栈顶元素,`pop()`方法则移除并丢弃栈顶元素。
4. 检查栈是否为空:
```cpp
bool isEmpty = myStack.empty(); // 返回true如果栈为空
```
5. 查看栈顶元素但不删除:
```cpp
int peekValue = myStack.top(); // 只查看栈顶元素,不会改变栈的状态
```
6. 遍历栈:
```cpp
while (!myStack.empty()) {
std::cout << myStack.top() << " ";
myStack.pop();
}
```
这将打印出栈中的所有元素,直到栈变为空。
阅读全文