unordered_map的元素访问方式及效率比较
发布时间: 2024-04-11 12:38:38 阅读量: 77 订阅数: 64
# 1. **unordered_map简介**
unordered_map是C++标准库中的关联容器,以哈希表的形式存储键值对。相较于map,unordered_map不要求元素按照特定顺序存储,而是根据哈希函数来快速定位元素。这使得unordered_map在插入、查找和删除等操作上具有更高的效率,尤其适合大数据量下的处理。unordered_map是STL中的一部分,可以使用标准的容器操作来对其进行操作,如插入、删除、查找等,使得编程更加方便。
unordered_map支持键值对的唯一性,即同一个键只能对应一个值。在C++11之后引入,为C++提供了更多的数据结构选择,极大地方便了开发人员在各种场景下的应用。unordered_map的使用场景广泛,尤其适合需要高效查找和插入数据的任务。
# 2. unordered_map的使用
unordered_map容器提供了简单且高效的键值对存储方式,下面我们将详细介绍如何使用unordered_map进行元素的插入、删除和查找操作。
### 2.1 插入元素
在unordered_map中插入元素常用的方式有两种:使用`insert`函数和使用`emplace`函数。
#### 2.1.1 使用insert函数
`insert`函数能够向unordered_map中插入一个键值对,如果键已经存在,则不会进行插入操作。
```cpp
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<int, std::string> umap;
// 使用insert函数插入元素
umap.insert(std::make_pair(1, "apple"));
umap.insert(std::make_pair(2, "banana"));
return 0;
}
```
#### 2.1.2 使用emplace函数
`emplace`函数与`insert`函数类似,但是可以直接在参数位置构造元素,效率更高。
```cpp
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<int, std::string> umap;
// 使用emplace函数插入元素
umap.emplace(1, "apple");
umap.emplace(2, "banana");
return 0;
}
```
### 2.2 删除元素
unordered_map也提供了删除元素的方法,可以使用`erase`函数删除特定键的元素,或者使用`clear`函数清空整个容器。
#### 2.2.1 使用erase函数
`erase`函数可以删除指定键的元素。
```cpp
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<int, std::string> umap = {{1, "apple"}, {2, "banana"}};
// 使用erase函数删除元素
umap.erase(1);
return 0;
}
`
```
0
0