C++容器详解:vector, deque, string, set, map等操作总结
需积分: 0 23 浏览量
更新于2024-08-05
收藏 310KB PDF 举报
"C++容器概览与常用操作"
在C++编程中,容器是STL(Standard Template Library,标准模板库)的重要组成部分,用于存储和管理数据。本篇主要总结了C++中几种常见的容器,包括`vector`、`deque`、`string`、`list`、`set`、`map`以及`priority_queue`,并详细阐述了它们的基本操作。
1. **`vector`**:动态数组,提供高效随机访问。通过下标进行访问,如`s[i]`。`push_back()`用于在末尾添加元素,`pop_back()`删除末尾元素。`insert(pos, elem)`在指定位置插入元素,`erase(pos)`或`erase(beg, end)`删除元素。`resize(num)`调整大小,`clear()`清空容器,`size()`返回元素数量,`empty()`检查是否为空,`front()`和`back()`分别获取首尾元素,`begin()`和`end()`返回迭代器。
2. **`deque`**:双端队列,允许在两端进行高效插入和删除。其操作与`vector`类似,但更适用于两端操作。
3. **`string`**:字符串类,提供了许多字符串操作,如`substr(pos, n)`截取子串,`find()`查找字符或子串,`find_first_of()`和`find_last_of()`查找特定字符集合中的第一个或最后一个匹配项。
4. **`list`**:双向链表,支持快速的前向和后向遍历,但随机访问效率较低。`find()`函数可用于查找元素,返回迭代器。`begin()`、`end()`、`rbegin()`、`rend()`、`cbegin()`和`cend()`分别表示正向和反向迭代器的起始和结束。
5. **`set`**:集合容器,存储唯一元素且自动排序。插入元素时会自动排序,如`insert(x)`。
6. **`map`**:关联容器,以键值对形式存储数据,每个键值唯一。插入键值对使用`insert(pair<key, value>)`。
7. **`priority_queue`**:优先队列,元素按优先级排序,通常默认从大到小。插入元素用`push(x)`,取出最大元素用`top()`,删除最大元素用`pop()`。
8. **排序函数**:`sort()`可对容器或数组进行排序,例如`vector<int>`或`string[]`。`upper_bound()`和`lower_bound()`用于查找大于或大于等于给定值的第一个元素的位置,返回迭代器。
9. **`pair`**:用于存储两个不同类型的数据,如`pair<t1, t2> x(x1, x2)`。访问成员用`.first`和`.second`,初始化和赋值方式多样。
遍历容器时,可以使用下标或迭代器。例如,对于`vector`,可以这样遍历:
```cpp
for(int i = 0; i < c.size(); i++) {
// 访问c[i]
}
```
或者使用迭代器:
```cpp
for(auto it = c.begin(); it != c.end(); it++) {
// 访问*it
}
```
在`list`中,迭代器的使用类似,只是不能进行随机访问。
以上就是C++中几种常见容器的基本操作和使用方式,理解并熟练掌握这些知识对于编写高效、灵活的C++代码至关重要。在实际编程中,选择合适的容器和正确使用它们将直接影响程序性能和可维护性。
361 浏览量
123 浏览量
140 浏览量
127 浏览量
白小俗
- 粉丝: 37
- 资源: 302
最新资源
- NLPModels.jl:优化模型的数据结构
- core:WordPress付款处理库的核心组件
- Hospital-in-C:使用C编程语言编写的完整医院管理系统
- OpenXenium:OpenXenium-原始Xbox的开源Xenium Modchip CPLD替换项目
- 三旺 NP312串口服务器驱动程序.rar
- joplin-cli-snap:乔普林终端应用程序(和Web剪辑服务器)的按扣包装
- ProtoGen.zip
- dotfiles::sparkling_heart:我可爱的增压点〜
- 广西壮族自治区森林覆盖率.rar
- 易语言移动网页元素
- 2,c语言鼠标连点器源码,c语言程序
- tbt:这是一个土巴兔项目演示上传或是入门二进制和发送发布
- crux-themes-5.0.2.zip
- wap-my-lab-page:WAP实验室项目
- 基于DSP28335 开发板实现SD_FAT_GreatDir的电路方案设计(pcb+原理图+源码)-电路方案
- 易语言移植的APC注入