unordered_map如何插入数据
时间: 2023-11-11 07:03:09 浏览: 103
unordered_map插入数据的方式有两种:insert()和emplace()。其中,insert()函数会返回一个pair类型的值,表示插入是否成功,而emplace()函数则直接插入元素,不返回任何值。如果unordered_map中已经存在相同的key,则insert()函数不会改变map数据,而emplace()函数则会改变value的值。需要注意的是,unordered_map是按照hash表建立规则进行存储的,因此插入的元素并不是按照key值排序存储,也不是按照插入顺序存储。具体遍历排列方式需要学习哈希表的知识。下面是一个示例代码:
```
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
unordered_map<int, float> my_map;
my_map.insert(make_pair(3, 0.1));
my_map.insert(make_pair(1, 0.2));
my_map[2] = 0.3;
my_map[4] = 0.4;
for (auto& item : my_map) {
cout << item.first << " " << item.second << endl;
}
return 0;
}
```
相关问题
unordered_map插入相同数据
unordered_map插入相同数据时,会发生什么?
unordered_map是一个哈希表,它使用哈希函数将键映射到桶中。当插入相同的数据时,unordered_map会根据键的哈希值找到对应的桶,并将数据插入到桶中。如果插入的键已经存在于unordered_map中,则插入操作不会改变unordered_map的内容,也不会引发任何错误。因为unordered_map中的键是唯一的,所以插入相同的键会被视为更新操作,即更新对应键的值。所以,插入相同的数据不会导致unordered_map中出现重复的键。
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`返回对应的值。
阅读全文