赞
踩
// unordered_map 是 C++ 标准模板库(STL)中的一个关联容器,它提供了键-值对的存储,其特点如下:
// 1. 哈希表结构:unordered_map 使用哈希表来实现,这意味着它能够以 O(1) 的平均时间复杂度进行元素的插入、查找和删除操作。
// 2. 无序性:unordered_map 中的元素没有固定的顺序,插入元素的顺序和元素的键值大小没有关系,因此无法通过索引来访问元素。
// 3. 唯一键:unordered_map 中的键是唯一的,每个键最多只能关联一个值。如果尝试插入一个已经存在的键,则该键对应的值会被更新。
// 4. 可变大小:unordered_map 可以动态地增加或减少存储空间,它会自动调整内部存储结构以适应存储元素的数量变化。
// 5. 迭代器支持:unordered_map 支持迭代器,可以通过迭代器对容器中的元素进行遍历和操作。
// 6. 查找效率高:由于哈希表的特性,unordered_map 在查找元素时具有较高的效率,尤其是在大数据量的情况下。
// 7. 内存占用相对较高:与有序关联容器(如 map)相比,unordered_map 在一定程度上会占用更多的内存空间,因为它需要额外的空间来存储哈希表的索引。
// unordered_map 提供了丰富的成员函数和操作符,使得对容器的操作更加方便和灵活。
--
unordered_map 是 C++ 标准模板库(STL)中的一种关联容器,它是一种以键值对的形式存储数据的集合。unordered_map 中的元素是通过哈希函数(hash function)来计算键的值,以确定元素的存储位置。因此,它也被称为“哈希表”(hash table)或“无序映射”(unordered map)。
-
// 在C++中,`unordered_map`容器的迭代器是一种指向容器元素的对象,它允许我们遍历容器中的元素。当我们在使用范围循环来遍历`unordered_map`时,迭代器`pair`会逐个指向每个键值对。
// 让我们来详细看看这个概念:
// - 在范围循环中,`const auto& pair` 中的`pair`是一个迭代器,它会依次指向`unordered_map`中的每个键值对。
// - 迭代器可以理解为容器中的一个游标,它可以通过递增来遍历容器中的元素。
// - 在每次迭代中,`pair`会指向当前遍历到的键值对,包括键和对应的值。
// - 通过`pair.first`和`pair.second`,我们可以访问当前键值对中的键和值。
// 所以,在`unordered_map`的范围循环中,`pair.first`用于访问当前键值对的键,`pair.second`用于访问当前键值对的值。
- #include <iostream>
- #include <unordered_map>
- #include <string>
-
- using namespace std;
-
- int main() {
- // 创建一个 unordered_map,键是学生姓名,值是年龄
- unordered_map<string, int> studentAge;
-
- // 向 unordered_map 中添加元素
- studentAge["Alice"] = 20;
- studentAge["Bob"] = 22;
- studentAge["Charlie"] = 21;
-
- // 访问元素并输出
- cout << "Alice's age: " << studentAge["Alice"] << endl;
- cout << "Bob's age: " << studentAge["Bob"] << endl;
- cout << "Charlie's age: " << studentAge["Charlie"] << endl;
-
- // 检查某个键是否存在
- string name = "David";
- if (studentAge.find(name) != studentAge.end()) {
- cout << name << "'s age: " << studentAge[name] << endl;
- } else {
- cout << name << " not found in the map." << endl;
- }
-
- // 删除某个键值对
- studentAge.erase("Charlie");
-
- // 遍历 unordered_map
- cout << "Student List:" << endl;
- for (const auto& pair : studentAge) {
- cout << "Name: " << pair.first << ", Age: " << pair.second << endl;
- }
-
- return 0;
- }
--------
unordered_map 是 C++ 标准库提供的一个非常有用的容器,它提供了许多成员函数和操作符,用于对哈希表中的键值对进行操作。
下面是一些 unordered_map 提供的主要成员函数和操作符:
1. 插入操作:
- insert: 插入键值对到 unordered_map 中。
- emplace: 在 unordered_map 中构造一个新的元素。
2. 访问元素:
- operator[]: 通过键访问值,如果键不存在,则会插入一个新的键值对。
- at: 通过键访问值,如果键不存在,则会抛出异常。
3. 删除元素:
- erase: 删除 unordered_map 中的指定元素或范围内的元素。
4. 查找操作:
- find: 查找指定键对应的迭代器,如果键不存在,则返回 unordered_map::end()。
5. 容量:
- size: 返回 unordered_map 中键值对的数量。
- empty: 检查 unordered_map 是否为空。
6. 哈希策略:
- hash_function: 返回用于计算键的哈希值的函数对象。
- bucket_count: 返回 unordered_map 中桶的数量。
7. 遍历操作:
- 使用迭代器进行遍历,如范围循环 for (const auto& pair : unordered_map)。
8. 其他操作:
- clear: 清空 unordered_map 中的所有元素。
- swap: 交换两个 unordered_map 的内容。
unordered_map 还支持各种操作符和比较函数,以及其他高级功能,使得在处理键值对时更加方便和灵活。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。