首页 > 代码库 > 【工作中学习2】Map的使用及排序(第三个参数)
【工作中学习2】Map的使用及排序(第三个参数)
项目进行中,使用到Map(std::map),Map要点整理如下:
1. Map,也叫关联数组,提供key/value(键/值对),key用来索引,value是被存储和检索的数据。
2. key值唯一(Multimap除外)。
3. Map的内部数据结构是红黑树。
3. 可以用下标操作符,添加Map中的数据,例如map[1] = 2;,用下标操作符查找数据时,如果数据不存在,会被自动插入到Map中。
4. Map中的数据默认按照由key从小到大排序(less),可以修改第三个参数(可选)来修改排序法则。
程序举例:
1 // testMap.cpp : Defines the entry point for the console application. 2 // 3 4 #include "stdafx.h" 5 #include <string> 6 #include <map> 7 #include <iostream> 8 9 struct SortMap 10 { 11 bool operator ()( const int i1, const int i2 ) 12 { 13 return i1 > i2; 14 } 15 }; 16 17 //traverse the map 18 void traverseMap(const std::map<int, std::string>& map) 19 { 20 std::map<int, std::string>::const_iterator iter = map.begin(); 21 22 while(iter != map.end()) 23 { 24 std::cout << "" << iter->first << "," << iter->second << std::endl; 25 iter++; 26 } 27 } 28 29 void traverseSortMap(const std::map<int, std::string, SortMap>& map) 30 { 31 std::map<int, std::string, SortMap>::const_iterator iter = map.begin(); 32 33 while(iter != map.end()) 34 { 35 std::cout << "" << iter->first << "," << iter->second << std::endl; 36 iter++; 37 } 38 } 39 40 41 int _tmain(int argc, _TCHAR* argv[]) 42 { 43 std::map<int, std::string> map1; 44 map1[1] = "no"; 45 map1[6] = "hi"; 46 map1[5] = "me"; 47 map1[9] = "ok"; 48 49 traverseMap(map1); 50 std::cout << "-------------------------------------------" << std::endl; 51 52 std::map<int, std::string, SortMap> map2; 53 map2[1] = "no"; 54 map2[6] = "hi"; 55 map2[5] = "me"; 56 map2[9] = "ok"; 57 58 traverseSortMap(map2); 59 60 system("pause"); 61 return 0; 62 }
运行结果:
继续努力~
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。