C++ STL Stack, Queue及Vector详解与操作示例
需积分: 21 144 浏览量
更新于2024-09-09
收藏 47KB DOC 举报
在C++中,标准模板库(Standard Template Library, STL)提供了几种基础的数据结构容器,如栈(Stack)、队列(Queue)和向量(Vector),它们在处理数据时具有不同的特性和用途。本文将详细介绍这些容器的使用方法以及它们在程序中的应用场景。
1. **Stack (栈)**:
- `top()`函数用于获取栈顶元素,但不会将其移除。这对于需要查看但不改变栈顶元素的情况非常有用。
- `empty()`函数用来检查栈是否为空,返回布尔值,如果为空则为`true`,反之为`false`。
- `size()`函数返回栈中元素的数量。
- `push()`函数用于在栈顶添加新元素,常用于后进先出(Last In, First Out, LIFO)的数据结构需求。
- `pop()`函数用于移除并返回栈顶元素,实现数据的出栈操作。
以下是一个栈的示例代码:
```cpp
#include <iostream>
#include <stack>
using namespace std;
void main() {
stack<char> v;
for (int i = 0; i < 10; i++) {
v.push(i + 97); // 将字符 'a' 到 'j' 入栈
}
cout << v.size() << endl; // 输出栈的大小
while (!v.empty()) { // 遍历并打印栈顶元素
cout << v.top() << "";
v.pop();
}
}
```
2. **Queue (队列)**:
- `empty()`同样用于判断队列是否为空。
- `front()`函数返回队列的前端元素,即第一个加入的元素。
- `pop()`函数移除并返回队头元素,遵循先进先出(First In, First Out, FIFO)原则。
- `back()`返回队列的后端元素,即最后加入的元素。
- `push()`函数在队尾插入新元素。
一个队列的示例代码如下:
```cpp
#include <iostream>
#include <queue>
using namespace std;
int main() {
queue<int> q;
for (int i = 0; i < 5; i++) {
q.push(i); // 将数字0到4依次入队
}
while (!q.empty()) {
cout << q.front() << endl; // 打印队头元素并出队
q.pop();
}
return 0;
}
```
3. **Priority Queue (优先队列)**:
- 优先队列是特殊类型的队列,它允许用户根据自定义的优先级对元素进行排序。
- 每次`push()`和`pop()`操作会动态调整队列内部的顺序,以确保符合用户设置的优先级。
- `top()`返回队列头部(即优先级最高的)元素。
- 默认情况下,优先队列使用元素类型的 `<` 操作符来确定优先级。例如,`priority_queue<int>` 中,较大的整数有更高的优先级。
在优先队列的应用示例中,例如使用`<`操作符,将数字5, 3, 2, 4, 6依次`push`到`priority_queue`中,输出结果将是最大的数字6,然后是5,依此类推。
```cpp
priority_queue<int> pq; // 默认按数值大小排序,6最大
pq.push(5);
pq.push(3);
pq.push(2);
pq.push(4);
pq.push(6);
// 输出:6 5 4 3 2
```
另一种情况是,如果希望小数具有更高的优先级,可以使用`greater<int>`作为比较器:
```cpp
priority_queue<int, vector<int>, greater<int>> pq; // 小的整数优先
```
通过以上介绍,你可以理解C++ STL中的栈、队列和优先队列的基本操作和用法,这些数据结构在算法设计、事件处理和许多其他场景中都发挥着重要作用。
2011-12-10 上传
2014-08-30 上传
2014-09-03 上传
2010-04-23 上传
2008-01-07 上传
2010-04-08 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
楚颜a
- 粉丝: 205
- 资源: 1
最新资源
- 图布局算法综述(很详细的)
- ORACLE傻瓜手册v2.0
- 基于FPGA 的DDS 调频信号的研究与实现.pdf
- ON_EXTENSION_AND_IMPLEMENTATION_MECHANISM_FOR.pdf
- grails入门指南
- LinkedIn - A Professional Network built with Java Technologies and Agile Practices
- sql性能调整-总结
- 硬盘接口技术详解文档
- 黑客常用DOS命令大全
- Sybase IQ For AIX安装
- GTK+ 2.0教程(PDF中文) unix/linux界面编程必备
- ISO27001标准的英文原版。。
- TD使用手册,比较经典的使用手册,测试必学
- 超市进销存管理系统的开发
- Compiere开发环境配置
- TortoiseSVN中文版手册