今天打算看一下unordered_map/unordered_set相关接口的使用,这两个函数的底层是用“哈希表+红黑树”,所以相比较map/set,它的查找速率更快,但这两个函数实在C++11中加入的所以有些环境下不能用
同样,这两个函数的接口很多,但我们一般用哈希表就是为了迅速的查找,所以只看常用的几个,用法其实和map/set相似
1、insert
unordered_map<string, int> mymap;
unordered_map<string, int> temp = { { "张三", 1 }, {"李四",5} };
//插入一个值
mymap.insert(make_pair("王麻子 ",2));
//插入一个区间
mymap.insert(temp.begin(), temp.end());
2、operator[ ]
//添加
mymap["小明"] = 6;
//修改
mymap["张三"] = 0;
//赋值
mymap["王麻子"] = mymap["小明"];
3、find
//查找(返回迭代器)
unordered_map<string,int>::iterator it=mymap.find("张三");
cout <<it->first<<":"<< it->second << endl;
it = mymap.find("李华");
if (it == mymap.end())
{
cout << "没找到" << endl;
}
测试列子:
int main()
{
unordered_map<string, int> mymap;
unordered_map<string, int> temp = { { "张三", 1 }, {"李四",5} };
//插入一个值
mymap.insert(make_pair("王麻子 ",2));
//插入一个区间
mymap.insert(temp.begin(), temp.end());
//添加
mymap["小明"] = 6;
//修改
mymap["张三"] = 0;
//赋值
mymap["王麻子"] = mymap["小明"];
//查找
unordered_map<string,int>::iterator it=mymap.find("张三");
cout <<it->first<<":"<< it->second << endl;
//找不到时
it = mymap.find("李华");
if (it == mymap.end())
{
cout << "没找到" << endl;
}
cout << endl;
//打印mymap
for (auto& x : mymap)
{
std::cout << x.first << ": " << x.second << std::endl;
}
system("pause");
return 0;
}