参考链接:https://blog.csdn.net/qq_41453285/article/details/105483561
- unordered_set:是无序元素的集合,其中每个元素不能重复
- unordered_multiset:和unordered set的唯一差别是,其元素可以重复
- unordered_map:元素都是key/value pair,每个key不能重复,value可以重复
- unordered_multimap:和unordered_map的唯一差别是,其key可以重复
无序容器的无序性
-
//当使用顺序容器时,会为key自动排序
-
-
map<
string,
int> word_count;
//空的
-
-
string word;
-
while (
cin >> word) {
-
++word_count[word];
-
}
-
-
for (
const
auto &w : word_count) {
-
cout <
" occurs "<
-
((w.second>
1)?
" times":
" time")<<
endl;
-
}
-
//无序容器的key随机存储
-
-
unordered_map<
string,
int> word_count;
//空的
-
-
string word;
-
while (
cin >> word) {
-
++word_count[word];
-
}
-
for (
const
auto &w : word_count) {
-
cout <
" occurs "<
-
((w.second>
1)?
" times":
" time")<<
endl;
-
}
无序容器的管理桶
- 无序容器提供了一组管理桶的函数,这些成员函数允许我们查询容器的状态以及必要时强制容器进行重组。见下面
无序容器对关键字类型的要求
三、unordered_map、unordered_multimap
- 头文件:#include
unordered_map提供下标操作、unordered_multimap不提供下标操作
- unordered_map的key唯一,提供下标操作;但unordered_multimapkey不唯一,补提供下标操作
- 使用方法:与map类似,见map文章
添加元素(insert、emplace)
- 见map笔记处
删除元素(erase)
- 见map函数,原理相同
其他操作
- 详细介绍,见map容器处
四、unordered_set、unordered_multiset
- 头文件:#include
都不提供下标操作(下标运算符和at函数)
- 因为只有一个key,没有key与value的对应关系
添加元素(insert、emplace)
- 见map笔记处
删除元素(erase)
- 见map函数,原理相同
其他操作
- 详细介绍,见map容器处