unordered_map增加
时间: 2024-09-12 20:04:48 浏览: 51
`unordered_map` 是 C++ 标准模板库(STL)中的一个容器,属于关联容器的一种,它使用哈希表实现,能够存储键值对。`unordered_map` 不保证元素的顺序,但提供常数时间复杂度的平均查找性能。
在 `unordered_map` 中增加元素可以通过多种方法,最常见的有:
1. `insert` 方法:可以向 `unordered_map` 中插入单个元素或多个元素。
- 单个插入:`unordered_map::insert` 会接受一个键值对作为参数,如果键不存在,则插入该键值对;如果键已存在,则不插入。
- 范围插入:`unordered_map::insert` 可以接受两个迭代器,代表插入范围的开始和结束,将这一范围内的所有元素插入到 `unordered_map` 中。
2. `operator[]`:通过 `operator[]` 可以直接使用键来访问 `unordered_map` 的元素,如果键不存在,则会自动创建新的键值对,键对应默认值,值对应默认构造的对象。
3. `emplace` 方法:从 C++11 开始提供的 `emplace` 方法,它使用完美转发来构造元素,可以避免不必要的拷贝或移动操作,提高效率。
下面是一个简单的例子:
```cpp
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int> myMap;
// 使用 insert 方法添加单个元素
myMap.insert(std::make_pair("key1", 10));
// 使用 operator[] 添加元素
myMap["key2"] = 20;
// 使用 emplace 方法添加元素
myMap.emplace("key3", 30);
// 打印元素
for (const auto& kv : myMap) {
std::cout << kv.first << " => " << kv.second << std::endl;
}
return 0;
}
```
当使用 `insert` 或 `emplace` 方法时,如果键已存在,操作将不会影响 `unordered_map` 中的元素。而使用 `operator[]` 时,如果键不存在则会插入新的键值对。
阅读全文