unordered_map的大小和容量操作解析
发布时间: 2024-04-11 12:39:25 阅读量: 80 订阅数: 59
# 1.1 了解unordered_map
在C++ STL中,unordered_map是一种关联容器,使用哈希表作为底层数据结构。哈希表通过哈希函数将键值对映射到桶(bucket)中,实现快速的查找、插入和删除操作。unordered_map适用于需要快速查找键值对的场景,比如存储唯一的键和对应的值。它在搜索、插入和删除方面的时间复杂度为常数级别,具有较快的性能。使用unordered_map可以快速定位元素,而无需按特定顺序遍历整个容器。这对于大规模数据存储和检索尤为重要,使程序在处理大量数据时保持高效率。
unordered_map的特点之一是其元素无序存储,键值对的存储顺序取决于哈希函数的映射结果。因此,在对元素顺序有要求的情况下,应该选择其他顺序容器来存储数据。
# 2. unordered_map的构造与初始化
unordered_map的构造与初始化是开始使用该数据结构的第一步,合适的构造方式能够提高程序的效率与可读性。
#### 2.1 创建unordered_map对象
无序映射容器unordered_map的创建可以通过默认构造函数或参数化构造函数来实现。
##### 2.1.1 默认构造函数
默认构造函数将创建一个空的unordered_map对象,示例代码如下:
```cpp
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<int, std::string> myMap;
return 0;
}
```
##### 2.1.2 参数化构造函数
参数化构造函数接受一个初始大小和可选的哈希函数与键相等性函数,例如:
```cpp
std::unordered_map<int, std::string> myMap(10); // 初始大小为10
```
#### 2.2 初始化unordered_map
unordered_map可以通过使用{}初始化列表、insert方法或emplace方法来进行初始化。
##### 2.2.1 使用{}初始化列表
通过初始化列表以键-值对的形式初始化unordered_map,示例代码如下:
```cpp
std::unordered_map<int, std::string> myMap = {{1, "One"}, {2, "Two"}, {3, "Three"}};
```
##### 2.2.2 insert方法的使用
使用insert方法向unordered_map中插入元素,代码示例如下:
```cpp
myMap.insert({4, "Four"});
```
##### 2.2.3 emplace方法的使用
emplace方法可通过参数直接构造键-值对,并插入到unordered_map中,示例代码如下:
```cpp
myMap.emplace(5, "Five");
```
在构造与初始化unordered_map时,合理选择构造方式有助于提高程序的效率与易读性,为后续操作打下基础。
# 3. unordered_map的元素访问
unordered_map 是 C++ STL 中的一个关联容器,提供了快速的查找、插入和删除操作。在使用 unordered_map 时,我们需要了解如何访问其中的元素,并对元素进行修改。本章将介绍 unordered_map 中元素的访问和修改操作。
#### 3.1 访问元素
在 unordered_map 中,我们可以通过键来访问对应的值。有两种常见的访问元素的方法,分别是使用下标操作符 [] 和 at() 方法。
##### 3.1.1 使用下标操作符[]
下标操作符 [] 可以让我们通过键值直接访问 unordered_map 中的元素。如果键不存在,则会
0
0