0. 容器模板定义
unordered_map 容器模板的定义如下所示:
template < class Key, //键值对中键的类型
class T, //键值对中值的类型
class Hash = hash<Key>, //容器内部存储键值对所用的哈希函数
class Pred = equal_to<Key>, //判断各个键值对键相同的规则
class Alloc = allocator< pair<const Key,T> > // 指定分配器对象的类型
> class unordered_map;
unordered_map容器里面的键值对是无序的,容器底层采用的是哈希表存储结构,该结构本身不具有对数据的排序功能,所以此容器内部不会自行对存储的键值对进行排序。这个里面有五个参数,必须显式的给前两个参数赋值。
1. 举例
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
int main()
{
//创建空 umap 容器
unordered_map<string, int> umap;
//向 umap 容器添加新键值对
umap.emplace("张三", 100);
umap.emplace("赵四", 95);
umap.emplace("王五", 99);
//输出 umap 存储键值对的数量
cout << "umap size = " << umap.size() << endl;
cout << "我们班级数学考试前三名如下: " << endl;
//使用迭代器输出 umap 容器存储的所有键值对
for (auto iter = umap.begin(); iter != umap.end(); ++iter) {
cout << iter->first << " " << iter->second << endl;
}
return 0;
}
console运行结果如下:
2. 再举例
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
int main()
{
//创建空 umap 容器
unordered_map<string, string> umap;
//向 umap 容器添加新键值对
umap.emplace("张三", "34岁");
umap.emplace("赵四", "37岁");
umap.emplace("王五","47岁");
//输出 umap 存储键值对的数量
cout << "umap size = " << umap.size() << endl;
cout << "桃园三结义的兄弟,各岁数如下: " << endl;
//使用迭代器输出 umap 容器存储的所有键值对
for (auto iter = umap.begin(); iter != umap.end(); ++iter) {
cout << iter->first << " " << iter->second << endl;
}
return 0;
}
参考链接: http://c.biancheng.net/view/7231.html