map和unordered_map区别及其优缺点
1.概念梳理
(1)字典类型
(2)内部实现机理
(3)常见用法
#include <iostream>
#include <unordered_map>
#include <map>
#include <string>
using namespace std;
int main()
{
//注意:C++11才开始支持括号初始化
unordered_map<int, string> myMap={{ 5, "TOM" },{ 6, "JESON" }};//使用{}赋值
// map<int, string> myMap={{ 5, "张大" },{ 6, "李五" }};//使用{}赋值
myMap[2] = "Ming"; //使用[ ]进行单个插入,若已存在键值2,则赋值修改,若无则插入。
myMap.insert(pair<int, string>(3, "Lily"));//使用insert和pair插入
//遍历输出+迭代器的使用
auto iter = myMap.begin();//auto自动识别为迭代器类型unordered_map<int,string>::iterator
while (iter!= myMap.end())
{
cout << iter->first << "," << iter->second << endl;
++iter;
}
//查找元素并输出+迭代器的使用
auto iterator = myMap.find(2);//find()返回一个指向2的迭代器
if (iterator != myMap.end())
cout << endl<< iterator->first << "," << iterator->second << endl;
system("pause");
return 0;
} 2.区别对比
(1)使用方法不同
(2) 底层实现的数据结构不同
(3)元素排列顺序不同
(4)插入和查询的时间复杂度不同
(5)效率及其稳定性不同
3.优缺点及适用场景
总结
Last updated