unordered_map和map 怎么用
时间: 2023-10-15 07:25:00 浏览: 79
unordered_map和unordered_set的模拟实现
5星 · 资源好评率100%
unordered_map和map都是C++中的关联容器,用于存储键值对。它们的主要区别在于底层的数据结构和性能特点。
使用unordered_map:
1. 包含头文件 `#include <unordered_map>`
2. 声明unordered_map对象,指定键类型和值类型,例如 `unordered_map<int, string> myMap;`
3. 插入键值对使用 `myMap[key] = value;` 或者 `myMap.insert(make_pair(key, value));`
4. 访问元素可以使用 `myMap[key]`,如果键不存在则会自动插入一个默认值
5. 使用迭代器进行遍历,例如:
```
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
cout << "Key: " << it->first << ", Value: " << it->second << endl;
}
```
使用map:
1. 包含头文件 `#include <map>`
2. 声明map对象,指定键类型和值类型,例如 `map<int, string> myMap;`
3. 插入键值对使用 `myMap[key] = value;` 或者 `myMap.insert(make_pair(key, value));`
4. 访问元素可以使用 `myMap[key]`,如果键不存在则会自动插入一个默认值
5. 使用迭代器进行遍历,例如:
```
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
cout << "Key: " << it->first << ", Value: " << it->second << endl;
}
```
需要注意的是,unordered_map是基于哈希表实现的,插入和查找的平均时间复杂度为常数O(1),但是不保证元素的顺序;而map是基于红黑树实现的,插入和查找的平均时间复杂度为对数O(logN),但是元素会按照键的顺序进行排序。因此,在选择使用时需要根据具体需求来决定。
阅读全文