底层实现结构:哈希表 冲突解决方法为链地址法 快速查找(使用哈希函数)
名称 | 备注 |
---|---|
unordered_map | 键值不相等;不可重复;无序; |
unordered_multimap | 可重复; |
unordered_set | 键值相等;不可重复;有序;不可修改; |
unordered_multiset | 可重复; |
(unordered_map)
#include<iostream> #include<unordered_map> #include<string> using namespace std; int main() { //声明 unordered_map<string, string> umap; unordered_map<string, string> umap{ {"Python教程","http://c.biancheng.net/python/"}, {"Java教程","http://c.biancheng.net/java/"}, {"Linux教程","http://c.biancheng.net/linux/"} }; unordered_map<string, string> umap2(umap); unordered_map<string, string> umap2(++umap.begin(), umap.end()); //遍历 for (auto iter = umap.begin(); iter != umap.end(); iter++) cout << iter->first << " " << iter->second << endl; //查找 auto iter = umap.find("Python教程"); int count = umap.count("Python教程"); //插入 umap.insert(make_pair("STL教程", "http://c.biancheng.net/stl/"));//返回 pair<unordered_map<string,string>::iterator,bool> umap.insert(++umap2.begin(), umap2.end()); umap.insert(++umap.begin(), { "Python教程","http://c.biancheng.net/python/" }); umap.insert({ {"STL教程","http://c.biancheng.net/stl/"}, {"Python教程","http://c.biancheng.net/python/"}, {"Java教程","http://c.biancheng.net/java/"} }); umap.emplace("STL教程", "http://c.biancheng.net/stl/");//返回 pair<unordered_map<string,string>::iterator,bool> umap.emplace_hint(umap.begin(),"STL教程", "http://c.biancheng.net/stl/");//返回 unordered_map<string,string>::iterator //删除 umap.erase(umap.end()); umap.erase("STL教程"); umap.erase(++umap.begin(), umap.end()); umap.clear(); //交换 umap.swap(umap2); return 0; }
(unordred_multimap)
(unordered_set)
#include<iostream> #include<unordered_set> #include<string> using namespace std; int main() { //声明 unordered_set<string> uset; unordered_set<string> uset{ "http://c.biancheng.net/c/", "http://c.biancheng.net/java/", "http://c.biancheng.net/linux/" }; unordered_set<string> uset2(uset); unordered_set<string> umap2(++uset.begin(), uset.end()); //删除 uset.erase(uset.end()); uset.erase("http://c.biancheng.net/c/"); uset.erase(++uset.begin(), uset.end()); return 0; }
(unordered_multiset)