unordered_map插入重复key会怎么样
时间: 2023-10-27 09:39:00 浏览: 797
如果在 `unordered_map` 中插入一个已经存在的 key,会发生以下情况:
1. 如果使用 `map[key] = value` 的方式插入,会更新对应 key 的 value 值。
2. 如果使用 `emplace` 或 `insert` 函数插入,不会覆盖原来的值,插入操作会被忽略,即不会插入新的键值对。
需要注意的是,由于 `unordered_map` 的 key 是无序的,所以在遍历时不能保证顺序。
相关问题
unordered_map插入对象
在C++中,`unordered_map`是一种关联容器,用于存储键值对,其插入操作相对简单。以下是插入对象到`unordered_map`的步骤:
1. **定义unordered_map对象**:
```cpp
std::unordered_map<KeyType, ValueType> myMap;
```
其中,`KeyType`是你想要用作键的数据类型(比如`int`),`ValueType`是对应值的数据类型(比如`int`)。
2. **插入元素**:
- 使用`[]`运算符直接插入键值对:
```cpp
myMap[key] = value;
```
- 或者使用`insert`函数与`pair`一起插入:
```cpp
myMap.insert(std::make_pair(key, value));
```
注意:如果你希望在不存在时插入,`[]`运算符会自动创建新元素,而`insert`则不会。
3. **演示插入并遍历unordered_map**:
```cpp
unordered_map<int, int> dict;
dict.insert({1, 1}); // 直接插入
dict.insert({1, 2}); // 又插入另一个键值对
// 使用迭代器遍历并打印键值对
for (auto iter = dict.begin(); iter != dict.end(); ++iter) {
std::cout << "key: " << iter->first << " value: " << iter->second << '\n';
}
```
当遍历时,`iter->first`返回当前键,`iter->second`返回对应的值。
std::unordered_map插入
std::unordered_map是C++标准库中的一个关联容器,它提供了一种键值对的映射关系。插入操作是向unordered_map中添加新的键值对。
要向std::unordered_map中插入元素,可以使用insert()函数或者[]操作符。下面是两种插入元素的方式:
1. 使用insert()函数:
```cpp
std::unordered_map<KeyType, ValueType> myMap;
myMap.insert(std::make_pair(key, value));
```
这里的KeyType是键的类型,ValueType是值的类型。通过std::make_pair()函数创建一个键值对,然后使用insert()函数将其插入到unordered_map中。
2. 使用[]操作符:
```cpp
std::unordered_map<KeyType, ValueType> myMap;
myMap[key] = value;
```
这种方式更简洁,直接使用[]操作符将键和值赋给unordered_map。
需要注意的是,如果插入的键已经存在于unordered_map中,那么插入操作将不会生效,即不会覆盖原有的值。
阅读全文