C++常用标准库容器
C++常用标准库容器
https://www.geeksforgeeks.org/containers-cpp-stl/
顺序容器 (sequence containers)
vector
可以动态扩展的列表
创建
1 |
|
常用操作
操作 | 函数 |
---|---|
插入 | v.insert(v.begin(), 3) |
插入到最后面 插入到最前面 |
v.push_back(3) v.push_front(3) |
删除 | v.erase(v.begin()) v.erase(v.begin(), v.end()) |
删除尾元素 删除头元素 |
v.pop_back() v.pop_front() |
计数 | v.count(3) |
pair类型
关联容器可能会使用到的数据类型,定义在头文件utility
中。具有两个数据成员,名字为first
以及second
。
关联容器 (associative containers)
map
创建
1 |
|
常用操作
操作 | 函数 | 返回 |
---|---|---|
插入 | map.insert({“word”, 1}) map.insert(make_pair(“word”, 1)) map.insert(pair<string, size_t>(“word”, 1)) |
|
删除 | map.erase(“word”) map.erase(iterator) |
|
查找 | map.find(“word”) | 返回指向第一个找到元素的迭代器 迭代器指向的类型为pair 若未找到,则返回尾后迭代器 |
计数 | map.count(“word”) | 计数值 |
下标操作
map(以及unordered_map)可以使用下标运算符,获取关键字对应的值。
如果关键字不存在,会用这个关键字创建一个新的元素,并对关联的值初始化。因此不应该直接用下标操作来进行查找,应该使用find()
。
1 |
|
注意:map 的下标操作返回的是关键字对应的值,而解引用 map 迭代器返回的是一个 pair
对象。
无序关联容器 (unordered associative containers)
使用哈希函数组织的关联容器,查找速度更快,时间复杂度平均O(1)
,最坏O(n)
。在关键字类型元素没有明显有序关系时,可以使用无序容器。
unordered_set
创建
1 |
|
常用操作
操作 | 函数 | 返回 |
---|---|---|
插入 | uset.insert(5) | 一个pair,first成员为指向插入元素的迭代器;second指示是否成功插入,true为成功插入,false为不成功(已经存在一样的元素) |
清空 | uset.clear() | void |
查询 | uset.find(key) | 指向找到元素的迭代器,或者尾后迭代器(没找到) |
unordered_map
无序键值对
创建
1 |
|
常用操作
操作 | 函数 | 返回 |
---|---|---|
插入 | umap.insert({“word”, 1}) umap.insert(make_pair(“word”, 1)) umap.insert(pair<string, size_t>(“word”, 1)) |
|
查询 | umap.find(“word”) | |
计数 | umap.count(“word”) |