C++容器详解:vector, deque, string, set, map等操作总结

需积分: 0 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++代码至关重要。在实际编程中,选择合适的容器和正确使用它们将直接影响程序性能和可维护性。