Containers library
容器库
容器库是类模板和算法的通用集合,允许程序员轻松地实现诸如队列、列表和堆栈之类的公共数据结构。有三类容器--顺序容器、关联容器和无序关联容器--每个容器都是为了支持不同的操作集而设计的。
容器管理为其元素分配的存储空间,并提供成员函数来直接或通过迭代器%28对象访问它们,这些对象的属性类似于指针%29。
大多数容器至少有几个成员函数是共同的,并且共享功能。哪个容器对特定的应用程序最好,这不仅取决于所提供的功能,还取决于它在不同工作负载下的效率。
序列容器
序列容器实现了可以顺序访问的数据结构。
array (since C++11) | static contiguous array (class template) |
---|---|
vector | dynamic contiguous array (class template) |
deque | double-ended queue (class template) |
forward_list (since C++11) | singly-linked list (class template) |
list | doubly-linked list (class template) |
关联容器
关联容器实现可快速搜索%28O%28log n%29复杂性%29的排序数据结构。
set | collection of unique keys, sorted by keys (class template) |
---|---|
map | collection of key-value pairs, sorted by keys, keys are unique (class template) |
multiset | collection of keys, sorted by keys (class template) |
multimap | collection of key-value pairs, sorted by keys (class template) |
无序关联容器
无序关联容器实现未排序%28散列%29数据结构,可以快速搜索%28O%281%29,O%28N%29最坏情况复杂性%29。
unordered_set (since C++11) | collection of unique keys, hashed by keys (class template) |
---|---|
unordered_map (since C++11) | collection of key-value pairs, hashed by keys, keys are unique (class template) |
unordered_multiset (since C++11) | collection of keys, hashed by keys (class template) |
unordered_multimap (since C++11) | collection of key-value pairs, hashed by keys (class template) |
集装箱适配器
容器适配器为顺序容器提供了不同的接口。
stack | adapts a container to provide stack (LIFO data structure) (class template) |
---|---|
queue | adapts a container to provide queue (FIFO data structure) (class template) |
priority_queue | adapts a container to provide priority queue (class template) |
迭代器失效
Thread safety All container functions can be called concurrently by different threads on different containers. More generally, the C++ standard library functions do not read objects accessible by other threads unless those objects are directly or indirectly accessible via the function arguments, including the this pointer. All const member functions can be called concurrently by different threads on the same container. In addition, the member functions begin(), end(), rbegin(), rend(), front(), back(), data(), find(), lower_bound(), upper_bound(), equal_range(), at(), and, except in associative containers, operator[], behave as const for the purposes of thread safety (that is, they can also be called concurrently by different threads on the same container). More generally, the C++ standard library functions do not modify objects unless those objects are accessible, directly or indirectly, via the function's non-const arguments, including the this pointer. Different elements in the same container can be modified concurrently by different threads, except for the elements of std::vector | (since C++11) |
---|
- 所有容器函数都可以由不同容器上的不同线程并发调用。更普遍的情况是,C++标准库函数不会读取其他线程可以访问的对象,除非这些对象可以通过函数参数(包括这个指针)直接或间接地访问。
- 全
const
成员函数可以由同一容器上的不同线程并发调用。此外,成员的功能begin()
,,,end()
,,,rbegin()
,,,rend()
,,,front()
,,,back()
,,,data()
,,,find()
,,,lower_bound()
,,,upper_bound()
,,,equal_range()
,,,at()
,除了在关联容器中,operator[]
,表现得像const
为了线程安全%28,也就是,它们也可以由同一容器%29上的不同线程并发调用。更普遍的情况是,C++标准库函数不修改对象,除非这些对象可以通过函数%27s的非Const参数(包括此指针)直接或间接地访问。
- 不同的线程可以同时修改同一容器中的不同元素,但std::vector<bool>%28例如,向量为std::future对象可以从多线程%29接收值。
- Iterator操作%28例如。增量迭代器%29读取,但不修改基础容器,并且可以与对同一容器上的其他迭代器、Const成员函数的操作同时执行,或者从元素中读取。使任何迭代器失效的容器操作修改容器,并且不能与现有迭代器上的任何操作同时执行,即使这些迭代器没有失效。
- 可以与未指定用于访问这些元素的成员函数同时修改同一容器的元素。更普遍的情况是,C++标准库函数不会读取通过参数%28(包括容器%29的其他元素)间接访问的对象,除非它的规范需要。
- 在任何情况下,容器操作%28以及算法,或任何其他C++标准库函数%5月29日都在内部并行化,只要这不改变用户可见的结果%28例如。
std::transform
可能是并行化的,但不是std::for_each
,它指定按%29顺序访问序列的每个元素。
%28自C++11%29
成员函数表
| functions present in C++03 |
---|---|
| functions present since C++11 |
| functions present since C++17 |
| Sequence containers | Associative containers | Unordered associative containers | Container adaptors |
---|---|---|---|---|
Header | <array> | <vector> | <deque> | <forward_list> |
Container | array | array | vector | vector |
列阵
矢量
德克
前移[医]列单
列单
集
多集
地图
穆蒂马普
无序[医]集
无序[医]多集
无序[医]地图
无序[医]穆蒂马普
堆叠
排队
优先权[医]排队
29%28构造函数%29%28隐式%29向量向量deque前向[医]前列[医]列表列表集集多集多集映射映射多时间点多序列无序[医]集无序[医]集无序[医]多集无序[医]多集无序[医]地图无序[医]地图无序[医]多重无序[医]多栈堆栈队列队列优先级[医]队列优先级[医]排队
%28构造函数%29
矢量
德克
前移[医]列单
列单
集
多集
地图
穆蒂马普
无序[医]集
无序[医]多集
无序[医]地图
无序[医]穆蒂马普
堆叠
排队
优先权[医]排队
%28析构器%29%28析构器%29%28隐式%29矢量~矢量~deque~deque~前进[医]列表~转发[医]列表~列表~列表~集~集~多集~多集~映射~映射~多个序列~无序[医]集~无序[医]集~无序[医]多集~无序[医]多集~无序[医]地图~无序[医]地图~无序[医]多重无序[医]多协议栈堆栈队列队列优先级[医]队列~优先级[医]排队
%28破坏者%29
~矢量
~德
~正[医]列单
~列表
~集
~多集
~地图
~Multimap
~无序[医]集
~无序[医]多集
~无序[医]地图
~无序[医]穆蒂马普
~栈
~队列
~优先权[医]排队
运算符=%28隐式%29操作符。运算符=运算符=运算符=运算符=运算符=运算符=
运算符=
运算符=
运算符=
运算符=
运算符=
运算符=
运算符=
运算符=
运算符=
运算符=
运算符=
运算符=
运算符=
运算符=
运算符=
运算符=
分配,再分配,再分配,再转售,再转售,再转售,再分配,再分配,再分配
指派
指派
指派
指派
指派
迭代器开始。---。再发
开始
克贝
开始
克贝
开始
克贝
开始
克贝
开始
克贝
开始
克贝
开始
克贝
开始
克贝
开始
克贝
开始
克贝
开始
克贝
开始
克贝
开始
克贝
开始
克贝
端端端cend cend cend。端端端cend cend cend。水煤浆
端部
康德
端部
康德
端部
康德
端部
康德
端部
康德
端部
康德
端部
康德
端部
康德
端部
康德
端部
康德
端部
康德
端部
康德
端部
康德
端部
康德
rBEGIN rBEGIN rBLEBINCRBIN rBEGINCRBINCRBERBERBINCRBEGINCRBERBINCRBINCRBINCRBINCRBINCRBINCRBINCRBINCRBINCRBINCRBIN。
里贝京
克拉贝恩
里贝京
克拉贝恩
里贝京
克拉贝恩
里贝京
克拉贝恩
里贝京
克拉贝恩
里贝京
克拉贝恩
里贝京
克拉贝恩
里贝京
克拉贝恩
里贝京
克拉贝恩
rend crend rend crend rend crend rend crend rend crend rend crend rend crend rend crend rend crend rend crend rend crend rend crend rend crend rend crend rend crend rend crend rend crend rend crend。crend rend crend crend crend
拉皮
凹痕
拉皮
凹痕
拉皮
凹痕
拉皮
凹痕
拉皮
凹痕
拉皮
凹痕
拉皮
凹痕
拉皮
凹痕
拉皮
凹痕
在at at at再叙的目的...
在
在
在
在
在
在
操作者。[]运算符。[]运算符。[]运算符。[]运算符。[]运算符。[]运算符。[]运算符。[]准相合算子。[]运算符。[]准相合算子。[]运算符。[]再分配
操作者。[]
操作者。[]
操作者。[]
操作者。[]
操作者。[]
操作者。[]
前前前前前前前前前前方近10---
前部
前部
前部
前部
前部
前部
前部
顶
背回回回后
退回去
退回去
退回去
退回去
退回去
顶
退回去
容量空空空。空空空
空空
空空
空空
空空
空空
空空
空空
空空
空空
空空
空空
空空
空空
空空
空空
空空
空空
尺寸尺寸尺寸。尺寸尺寸尺寸
大小
大小
大小
大小
大小
大小
大小
大小
大小
大小
大小
大小
大小
大小
大小
大小
马克斯[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]最大尺寸[医]浆料浆料
马克斯[医]大小
马克斯[医]大小
马克斯[医]大小
马克斯[医]大小
马克斯[医]大小
马克斯[医]大小
马克斯[医]大小
马克斯[医]大小
马克斯[医]大小
马克斯[医]大小
马克斯[医]大小
马克斯[医]大小
马克斯[医]大小
马克斯[医]大小
尺寸调整
调整尺寸
调整尺寸
调整尺寸
调整尺寸
调整尺寸
容量容量[医]计数桶[医]计数桶[医]计数桶[医]计数桶[医]计数桶[医]计数桶[医]计数桶[医]计数法
容量
容量
斗[医]数数
斗[医]数数
斗[医]数数
斗[医]数数
备用备用备用准备金率备用准备金率
储备
储备
储备
储备
储备
储备
收缩[医]到[医]配合收缩[医]到[医]配合收缩[医]到[医]配合收缩[医]到[医]配合收缩[医]到[医]配合收缩[医]到[医]适配性---再---
收缩[医]到[医]合身
收缩[医]到[医]合身
收缩[医]到[医]合身
修饰语清晰、清晰、清晰、清晰、清晰、清晰、清晰、清晰、清晰、清晰、清晰、清晰、清晰、清晰、清晰、清晰。清晰清晰
清澈
清澈
清澈
清澈
清澈
清澈
清澈
清澈
清澈
清澈
清澈
清澈
清澈
插入插入插入[医]插入后[医]插入后插入插入插入
插入
插入
插入
插入[医]后
插入
插入
插入
插入
插入
插入
插入
插入
插入
后置[医]后置[医]之后,在位置之后,在位置,位置,位置,位置,位置,位置,位置,位置
座落
座落
座落
座落[医]后
座落
座落
座落
座落
座落
座落
座落
座落
座落
座落[医]暗示嵌入[医]暗示---再---[医]暗示嵌入[医]暗示嵌入[医]暗示嵌入[医]暗示嵌入[医]暗示嵌入[医]暗示嵌入[医]暗示嵌入[医]暗示嵌入[医]暗示嵌入[医]暗示嵌入[医]暗示嵌入[医]暗示嵌入[医]暗示嵌入[医]暗示嵌入[医]暗示嵌入[医]暗示再分配
座落[医]暗示
座落[医]暗示
座落[医]暗示
座落[医]暗示
座落[医]暗示
座落[医]暗示
座落[医]暗示
座落[医]暗示
座落[医]暗示
擦除;擦除;擦除[医]擦除后[医]擦除后擦除擦除擦除擦除擦除擦除擦除擦除擦除擦除擦除擦除擦除擦除
擦除
擦除
擦除
擦除[医]后
擦除
擦除
擦除
擦除
擦除
擦除
擦除
擦除
擦除
推[医]前推[医]前副推[医]前推[医]前推[医]前推[医]前推[医]前推[医]第一线---自愿性---金融---金融
推[医]前部
推[医]前部
推[医]前部
推[医]前部
座落[医]前置[医]前沿副基地[医]前置[医]前置[医]前置[医]前置[医]前置[医]第一线---自愿性---金融---金融
座落[医]前部
座落[医]前部
座落[医]前部
座落[医]前部
波普[医]前爆[医]前副POP[医]前爆[医]前爆[医]前爆[医]前爆[医]前爆[医]前部成品率成绩单...===
波普[医]前部
波普[医]前部
波普[医]前部
波普[医]前部
波普
波普
推[医]后推[医]反推[医]后推[医]后推[医]后推[医]反推[医]后推[医]后继性自愿---
推[医]退回去
推[医]退回去
推[医]退回去
推[医]退回去
推
推
推
座落[医]后座[医]背靠背[医]后座[医]后座[医]后座[医]背靠背[医]后座[医]再转轨---
座落[医]退回去
座落[医]退回去
座落[医]退回去
座落[医]退回去
座落
座落
座落
波普[医]后弹[医]背靠背POP[医]后弹[医]后弹[医]后弹[医]背靠背POP[医]后弹[医]GB/T1381-1998技术支持
波普[医]退回去
波普[医]退回去
波普[医]退回去
波普[医]退回去
波普
互换互换交换交换交换互换交换交换交换。互换交换交换交换
互换
互换
互换
互换
互换
互换
互换
互换
互换
互换
互换
互换
互换
互换
互换
互换
互换
合并合并合并。再发
合并
合并
合并
合并
合并
合并
合并
合并
合并
合并
合并
抽提物。二次
提取液
提取液
提取液
提取液
提取液
提取液
提取液
提取液
提取液
列表操作拼接拼接[医]后接[医]剪接后的自愿性
接合
接合[医]后
接合
移除;再去除;再粗移除;再去除;再去除;再去除;再
移除
移除
移除
移除[医]若移除[医]若再合并移除[医]若移除[医]若移除[医]若移除[医]如果是自愿的话,则会有更多的可能性。
移除[医]
移除[医]如果
移除[医]如果
GB/T1459.2-1988反逆向商品商品商品价格
倒向
倒向
倒向
独特的,独特的,独特的,特别的,特别的,特别的,特别的,特别的,特别的,特别的
独树一帜
独树一帜
独树一帜
分类分类,再分类,再分类,再分类,再分类,再分类,再分类,再分类,再分类,再分类
排序
排序
排序
查计数计数计数
数数
数数
数数
数数
数数
数数
数数
数数
数数
找到,找到,找到,找到,找到,找到,找到,找到,找到
找出
找出
找出
找出
找出
找出
找出
找出
找出
较低[医]界下[医]准再税[医]界下[医]界下[医]界下[医]界下[医]界下[医]界下[医]界下[医]准准性
较低[医]定界
较低[医]定界
较低[医]定界
较低[医]定界
较低[医]定界
上层[医]界上[医]准再税[医]界上[医]界上[医]界上[医]界上[医]界上[医]界上[医]界上[医]准准性
上层[医]定界
上层[医]定界
上层[医]定界
上层[医]定界
上层[医]定界
平等[医]范围相等[医]范围---再分配---等量[医]范围相等[医]范围相等[医]范围相等[医]范围相等[医]范围相等[医]范围相等[医]范围相等[医]范围相等[医]范围相等[医]范围相等[医]范围相等[医]范围相等[医]范围相等[医]范围相等[医]范围相等[医]量程再分配
平等[医]范围
平等[医]范围
平等[医]范围
平等[医]范围
平等[医]范围
平等[医]范围
平等[医]范围
平等[医]范围
平等[医]范围
观察者键[医]COMP键[医]比较[医]COMP键[医]COMP键[医]COMP键[医]COMP键[医]COMP键[医]COMP键[医]COMP键[医]商品价格
键[医]康普
键[医]康普
键[医]康普
键[医]康普
键[医]康普
价值[医]COMP值[医]商品价值[医]COMP值[医]COMP值[医]COMP值[医]COMP值[医]COMP值[医]COMP值[医]COMP值[医]商品价格
价值[医]康普
价值[医]康普
价值[医]康普
价值[医]康普
价值[医]康普
散列[医]函数散列[医]功能评估[医]函数散列[医]函数散列[医]函数散列[医]函数散列[医]函数散列[医]函数散列[医]函数散列[医]功能再分配
散列[医]功能
散列[医]功能
散列[医]功能
散列[医]功能
散列[医]功能
键[医]EQ键[医]EQ---再---[医]EQ键[医]EQ键[医]EQ键[医]EQ键[医]EQ键[医]EQ键[医]EQ键[医]EQ法
键[医]情商
键[医]情商
键[医]情商
键[医]情商
键[医]情商
分配器[医]分配器[医]分配器[医]分配器[医]分配器[医]分配器[医]分配器[医]分配器[医]分配器[医]分配器[医]分配器[医]分配器[医]分配器[医]分配器[医]分配器[医]分配器[医]分配器[医]分配器[医]分配器[医]分配器[医]分配器[医]分配器[医]分配器[医]分配器[医]分配器[医]分配器[医]分配器
弄到[医]分配器
弄到[医]分配器
弄到[医]分配器
弄到[医]分配器
弄到[医]分配器
弄到[医]分配器
弄到[医]分配器
弄到[医]分配器
弄到[医]分配器
弄到[医]分配器
弄到[医]分配器
弄到[医]分配器
弄到[医]分配器
容器阵列矢量矢量向量的正演[医]前列[医]列表列表集集多集多集映射映射多时间点多序列无序[医]集无序[医]集无序[医]多集无序[医]多集无序[医]地图无序[医]地图无序[医]多重无序[医]多栈堆栈队列队列优先级[医]队列优先级[医]排队
列阵
矢量
德克
前移[医]列单
列单
集
多集
地图
穆蒂马普
无序[医]集
无序[医]多集
无序[医]地图
无序[医]穆蒂马普
堆叠
排队
优先权[医]排队
关联容器无序关联容器适配器
%28 a PDF版本的表格可在文件:容器-库-概述-2012-12-27.pdf.%29
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。