C++——STL(无序容器)
2021/5/13 20:29:24
本文主要是介绍C++——STL(无序容器),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
无序容器
底层实现结构:哈希表 冲突解决方法为链地址法 快速查找(使用哈希函数)
名称 | 备注 |
---|---|
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)
- 没有[]定位指定key
- 没有at() 成员函数
- 头文件仍是引用 unordered_map
(unordered_set)
- 不再以键对方式存储
- 没有[]定位值
- 没有at()成员函数
- 不可修改
#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)
- 不再限定唯一值
- 头文件仍是引用 unordered_set
这篇关于C++——STL(无序容器)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-30uniAPP 实现全屏左右滚动滚动的效果-icode9专业技术文章分享
- 2024-06-30如何在本地使用授权或插件-icode9专业技术文章分享
- 2024-06-30伪静态规则配置方法汇总-icode9专业技术文章分享
- 2024-06-29易优CMS安装常见问题汇总-icode9专业技术文章分享
- 2024-06-28易优新手必读安装教程-icode9专业技术文章分享
- 2024-06-28忘记eyoucms后台密码怎么办?-icode9专业技术文章分享
- 2024-06-26终极指南:Scrum中如何设置需求优先级
- 2024-06-26AI大模型企业应用实战(25)-为Langchain Agent添加记忆功能
- 2024-06-26小白家庭 nas 搭建方案-icode9专业技术文章分享
- 2024-06-23AI大模型企业应用实战(14)-langchain的Embedding