如何在C++中创建无序对unordered_map?

如何在C++中创建无序对unordered_map?

unordered_mapC++ STL(标准模板库)中的一个关联容器,它允许我们将一个唯一的键与一个值进行关联。与map容器类似,unordered_map使用哈希表进行快速数据访问,但与map不同的是,unordered_map不会对键进行排序。

本文将介绍在C++中如何创建unordered_map容器以及如何使用它来管理键值对。

创建unordered_map

在C++中创建unordered_map容器有两种方式:

  1. 创建空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可以有效地处理大量的数据并提高程序的效率。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程