C++第10课 STL容器 (九)
2021/9/9 20:34:36
本文主要是介绍C++第10课 STL容器 (九),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.map(映射)
/* map:映射,一种对应关系 自带排序(按照键去排序) 键唯一,相同键采用最后一次插入的数据,覆盖的方式去处理 存储的数据是: 数对类型(pair) */ void testMap() { map<int, string>str; //1.pair对象插入 str.insert(pair<int, string>(1, "小可爱")); //2.数组法插入 str[-1] = "小甜心"; //3.间接通过make_pair构建一个pair类型 str.insert(make_pair<int, string>(2, "小宝贝")); str[-1] = "小美女"; for (auto v : str) { cout << v.first << "\t" << v.second << "\t"; } cout << endl; map<int,string>::iterator iter=str.begin(); while (iter != str.end()) { cout << (*iter).first << "\t" << (*iter).second << "\t"; iter++; } cout << endl; } class MM { public: MM() = default; MM(string name, int age) :name(name), age(age) {} string getName() { return name; } int getAge() { return age; } bool operator<(const MM& object) const { return this->age < object.age; } friend ostream& operator<<(ostream& out, const MM& mm) { out << mm.name << "\t" << mm.age; return out; } protected: string name; int age; }; class GG { public: GG() = default; GG(string name, int age) :name(name), age(age) {} string getName() { return name; } int getAge() { return age; } friend ostream& operator<<(ostream& out, const GG& gg) { out << gg.name << "\t" << gg.age; return out; } protected: string name; int age; }; template <class _Ty1, class _Ty2> void print(map<_Ty1, _Ty2>& temp) { for (auto v : temp) { //int MM cout << v.first << "\t" << v.second << endl; } } void testUserData() { //可以任意对应 map<int, MM> mmData; mmData[1] = MM("小美人", 18); mmData[3] = MM("小可爱", 29); mmData[2] = MM("小甜心", 28); print(mmData); map<MM, GG> mmgg; //less<int> < mmgg[MM("张三", 18)] = GG("李四", 20); mmgg[MM("王五", 29)] = GG("赵六", 34); mmgg[MM("美女", 45)] = GG("帅哥", 55); cout << mmgg[MM("美女", 45)].getName() << mmgg[MM("美女", 45)].getAge() << endl; print(mmgg); //< map<string, string, less<string>> strData; //和默认是一样,从小到大 //> map<string, string, greater<string>> greaterData; //从大到小 } void testmultimap() { multimap<int, string> mulData; //注意点: 多重映射不能采用下标法赋值 mulData.insert(make_pair<int, string>(3, "测试结果")); mulData.insert(pair<int, string>(1, "多重映射")); mulData.insert(make_pair<int, string>(1, "多重映射2")); for (auto v : mulData) { cout << v.first << "\t" << v.second << endl; } } void testNestMap() { map<int, map<string, MM>> mapData; map <string, MM> mmData; mmData["美女"] = MM("小美", 18); mapData[0] = mmData; cout << mapData[0]["美女"].getName() << mapData[0]["美女"].getAge() << endl; }
这篇关于C++第10课 STL容器 (九)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-10Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用