unordered_map 是 C++ STL 中的一个容器,它提供了一个基于键-值对的无序集合。它是以哈希表的形式实现的,因此插入、删除和查找元素的时间复杂度都是 O(1)。
unordered_map的API包括以下几个重大的函数:
- insert(key, value):向unordered_map中插入一个键值对。
- erase(key):从unordered_map中删除指定的键值对。
- find(key):在unordered_map中查找指定的键,并返回指向对应值的迭代器。
- count(key):返回unordered_map中指定键的数量,一般用于判断某个键是否存在。
- size():返回unordered_map中键值对的数量。
- empty():判断unordered_map是否为空。
- clear():清空unordered_map中的所有键值对。
- begin()和end():返回指向unordered_map中第一个键值对和最后一个键值对之后的迭代器,用于遍历unordered_map中的所有键值对。
- operator[]:重载了[]操作符,可以通过键访问对应的值,如果键不存在则会插入一个默认的值。
需要注意的是,unordered_map中的键是唯一的,如果插入了重复的键,则旧的键值对会被新的键值对替代。另外,unordered_map不保证元素的顺序,键值对在内部存储时会根据哈希值进行随机排序。如果需要按照特定的顺序访问键值对,可以思考使用std::map。
unordered_map 提供的主要 API 的详细介绍:
-
构造函数
-
unordered_map(): 构造一个空的 unordered_map。 -
unordered_map(size_type n): 构造一个具有 n 个桶的 unordered_map。 -
unordered_map(size_type n, const hasher& hf, const key_equal& eql): 构造一个具有 n 个桶,并使用指定的哈希函数 hf 和键相等函数 eql 的 unordered_map。 -
unordered_map(const unordered_map& other): 构造一个 unordered_map,其中包含其他 unordered_map 的副本。
-
-
迭代器
-
begin(): 返回指向容器中第一个元素的迭代器。 -
end(): 返回指向容器中最后一个元素之后位置的迭代器。 -
cbegin(): 返回指向容器中第一个元素的常量迭代器。 -
cend(): 返回指向容器中最后一个元素之后位置的常量迭代器。
-
-
容量
-
empty(): 检查容器是否为空,如果为空则返回 true,否则返回 false。 -
size(): 返回容器中元素的个数。 -
max_size(): 返回容器能容纳的最大元素个数。
-
-
修改器
-
insert(const value_type& val): 在容器中插入一个键-值对 val。 -
erase(const key_type& k): 删除容器中键为 k 的键-值对。 -
clear(): 清空容器中的所有键-值对。 -
swap(unordered_map& other): 交换两个 unordered_map 容器的内容。
-
-
查找和访问元素
-
at(const key_type& k): 返回容器中键为 k 的值,如果 k 不存在,则抛出一个 out_of_range 异常。 -
operator[](const key_type& k): 返回容器中键为 k 的值的引用,如果 k 不存在,则插入一个新的键-值对并返回该值的引用。 -
find(const key_type& k): 查找容器中键为 k 的键-值对,并返回一个指向该键-值对的迭代器,如果 k 不存在,则返回 end()。 -
count(const key_type& k): 返回容器中键为 k 的键-值对的个数,要么是 0(不存在),要么是 1(存在)。 -
erase(iterator position): 删除容器中迭代器 position 指向的键-值对。 -
erase(iterator first, iterator last): 删除容器中位于区间 [first, last) 内的所有键-值对。
-
unordered_map是C++标准库中的一种容器,它提供了一种将键值对映射关系保存在一个无序集合中的方式。unordered_map使用哈希表来实现,因此插入、删除和查找操作的平均时间复杂度为常数O(1)。
unordered_map的使用方法如下:
- 引入头文件
#include <unordered_map>
- 创建unordered_map对象
std::unordered_map<Key, Value> myMap;
其中,Key和Value分别表明键和值的类型。
- 插入元素
myMap.insert(std::make_pair(key, value));
或者使用下标操作符
myMap[key] = value;
- 访问元素
Value value = myMap[key];
- 删除元素
myMap.erase(key);
- 查找元素
auto it = myMap.find(key);
if (it != myMap.end()) {
// 找到了
} else {
// 没找到
}
- 遍历元素
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
Key key = it->first;
Value value = it->second;
// 处理键值对
}
unordered_map还提供了其他一些成员函数和操作符,如size()、empty()、clear()、桶相关的函数和哈希函数相关的函数,以及与其他容器的比较和交换等。上述是其中的一些主要的 API,可以根据具体的需求选择合适的函数来使用。
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END


















暂无评论内容