map, unordered_map插入效率
时间: 2023-08-09 13:12:11 浏览: 61
map和unordered_map在插入效率上有所不同。map是通过红黑树实现的,插入操作的时间复杂度是O(log n),其中n是元素的数量。而unordered_map则是通过哈希表实现的,插入操作的平均时间复杂度是O(1),最坏情况下的时间复杂度是O(n)。因此,当需要频繁插入元素时,unordered_map的插入效率更高。
相关问题
unordered_map的插入
unordered_map的插入可以使用insert函数或者下标操作符来完成。
使用insert函数:
```cpp
#include <unordered_map>
int main() {
std::unordered_map<int, std::string> myMap;
// 使用insert函数插入键值对
myMap.insert(std::make_pair(1, "One"));
myMap.insert(std::make_pair(2, "Two"));
myMap.insert(std::make_pair(3, "Three"));
return 0;
}
```
使用下标操作符:
```cpp
#include <unordered_map>
int main() {
std::unordered_map<int, std::string> myMap;
// 使用下标操作符插入键值对
myMap[1] = "One";
myMap[2] = "Two";
myMap[3] = "Three";
return 0;
}
```
无论使用哪种方式,键值对将被插入到unordered_map中。如果键已经存在,插入操作将被忽略。
unordered_map如何插入数据
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;
}
```