用vector实现栈
时间: 2023-08-15 22:11:15 浏览: 64
可以使用 std::vector 来实现栈的功能。栈是一种后进先出(LIFO)的数据结构,所以我们可以使用 vector 的 push_back 和 pop_back 方法来实现栈的 push 和 pop 操作。
首先,我们需要在头文件中包含 vector:
```c++
#include <vector>
```
接着,我们可以定义一个类作为栈的封装,其中包含一个 vector 对象和一些方法:
```c++
class Stack {
private:
std::vector<int> elements;
public:
void push(int value) {
elements.push_back(value);
}
int pop() {
if (elements.empty()) {
throw std::out_of_range("Stack is empty");
}
int value = elements.back();
elements.pop_back();
return value;
}
int size() const {
return elements.size();
}
bool empty() const {
return elements.empty();
}
};
```
在上面的代码中,我们定义了一个 Stack 类,其中包含一个私有成员 elements,它是一个 vector 对象。push 方法使用 vector 的 push_back 方法将元素插入到栈顶。pop 方法先检查栈是否为空,如果不为空则使用 vector 的 pop_back 方法将栈顶元素弹出并返回。size 和 empty 方法分别返回栈的大小和是否为空。
这样,我们就可以使用上面定义的 Stack 类来实现栈的功能了:
```c++
int main() {
Stack stack;
stack.push(1);
stack.push(2);
stack.push(3);
while (!stack.empty()) {
std::cout << stack.pop() << std::endl;
}
return 0;
}
```
上面的代码首先创建了一个 Stack 对象,然后依次将元素 1、2、3 压入栈中。接着,使用 while 循环将栈中的元素弹出并输出。输出结果为:
```
3
2
1
```
这表明栈的 push 和 pop 操作已经成功地实现了。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)