赞
踩
C++ STL 标准库中提供有 4 种无序关联式容器,本文讲解unordered_map容器。
(最近刷Leetcode总是会遇到,现在就过来记录一下,总是会忘!)
unordered_map 容器,直译过来就是"无序 map 容器"的意思。所谓“无序”,指的是unordered_map 容器不会像 map 容器那样对存储的数据进行排序。换句话说,unordered_map 容器和 map 容器仅有一点不同,即 map 容器中存储的数据是有序的,而 unordered_map 容器中是无序的。
这里不讲解响应的基本原理,仅仅讲解如何创建、使用!
1.可以创建空的unordered_map容器:
std::unordered_map<std::string, std::string> umap;
由此,创建了可存储<string, string>键值对的哈希表。
2.在创建 unordered_map 容器的同时,可以完成初始化操作:
- std::unordered_map<std::string, std::string> umap{
- {"Python教程","http://c.biancheng.net/python/"},
- {"Java教程","http://c.biancheng.net/java/"},
- {"Linux教程","http://c.biancheng.net/linux/"} };
通过此方法创建的 umap 容器中,就包含有 3 个键值对元素。
3.另外,还可以调用 unordered_map 模板中提供的复制(拷贝)构造函数,将现有 unordered_map 容器中存储的键值对,复制给新建 unordered_map 容器。
std::unordered_map<std::string, std::string> umap2(umap);
例如,将上述初始化的哈希表umap复制拷贝到umap2。
- #include <iostream>
- #include <string>
- #include <unordered_map>
- using namespace std;
- int main()
- {
- //创建空 umap 容器
- unordered_map<string, string> umap;
- //向 umap 容器添加新键值对
- umap.emplace("Python教程", "http://c.biancheng.net/python/");
- umap.emplace("Java教程", "http://c.biancheng.net/java/");
- umap.emplace("Linux教程", "http://c.biancheng.net/linux/");
-
- //输出 umap 存储键值对的数量
- cout << "umap size = " << umap.size() << endl;
- //使用迭代器输出 umap 容器存储的所有键值对
- for (auto iter = umap.begin(); iter != umap.end(); ++iter) {
- cout << iter->first << " " << iter->second << endl;
- }
- return 0;
- }
umap size = 3
Python教程 http://c.biancheng.net/python/
Linux教程 http://c.biancheng.net/linux/
Java教程 http://c.biancheng.net/java/
上述对于map容器的解释参考于C++ STL unordered_map容器用法详解 (biancheng.net)
Leetcode练习题链接:2605. 从两个数字数组里生成最小数字 - 力扣(LeetCode)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。