如何在C++中创建无序对unordered_map?
unordered_map
是C++ STL(标准模板库)中的一个关联容器,它允许我们将一个唯一的键与一个值进行关联。与map
容器类似,unordered_map
使用哈希表进行快速数据访问,但与map
不同的是,unordered_map
不会对键进行排序。
本文将介绍在C++中如何创建unordered_map
容器以及如何使用它来管理键值对。
创建unordered_map
在C++中创建unordered_map
容器有两种方式:
- 创建空
unordered_map
我们可以通过下列语句来创建一个空的
unordered_map
:
std::unordered_map<std::string, int> myMap;
```
在上面的语句中,我们创建了一个`unordered_map`,键的类型为`std::string`,值的类型为`int`,并命名为`myMap`。这里键的类型可以为任何拥有有效哈希函数的类型。
2. 创建带有键值对的`unordered_map`
我们可以定义一个`std::pair`类型的容器来存储键值对,并向`unordered_map`容器添加该键值对。下面是一个示例代码:
```cpp
std::unordered_map<std::string, int> myMap{
{ "apple", 2 },
{ "banana", 3 },
{ "cherry", 4 }
};
```
在上面的语句中,我们定义了一个以`std::string`为键类型,以`int`为值类型的`unordered_map`容器,并向该容器添加了三个键值对。这种方式比第一种方式更加常用。
## 访问unordered_map
在`unordered_map`容器中访问键值对有两种方法:使用`[]`操作符和使用`at()`函数。
1. 使用`[]`操作符
我们可以使用`[]`操作符来访问`unordered_map`容器中的键值对。下面是一个示例:
```cpp
myMap["apple"] = 5;
```
在上面的语句中,我们使用`[]`操作符将键`"apple"`与值`5`关联起来。如果该键不存在,则创建一个新的键值对。如果该键已经存在,则更新其关联的值。
2. 使用`at()`函数
另一种访问`unordered_map`容器的方法是使用`at()`函数。下面是一个示例:
```cpp
int value = myMap.at("apple");
```
在上面的语句中,我们使用`at()`函数来访问键`"apple"`关联的值。与`[]`操作符不同,如果该键不存在,则`at()`函数会抛出一个`std::out_of_range`异常。
## 遍历unordered_map
我们可以使用迭代器来遍历`unordered_map`容器中的所有键值对。下面是一个示例代码:
```cpp
for (auto it = myMap.begin(); it != myMap.end(); it++) {
std::cout << it->first << " : " << it->second << std::endl;
}
在上面的代码中,it
是一个迭代器,它指向unordered_map
容器中的每个键值对。我们可以使用it->first
来访问该迭代器所指向的键,使用it->second
访问其关联的值。
删除键值对
我们可以使用erase()
函数来删除unordered_map
容器中的键值对。下面是一个示例代码:
myMap.erase("apple");
在上面的代码中,我们使用erase()
函数来删除键为"apple"
的键值对。
结论
在本文中,我们介绍了如何在C++中创建无序对unordered_map
容器,并学习了如何访问、遍历和删除unordered_map
容器中的键值对。unordered_map
是一个非常方便的数据结构,它允许我们快速地关联一个唯一的键和一个值。在C++中使用unordered_map
可以有效地处理大量的数据并提高程序的效率。