`
nepshi
  • 浏览: 49519 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

map中自定义key排序函数

 
阅读更多
map<KeyType, ValueType> mymap;
for (map<KeyType, ValueType>::iterator it = mymap.begin(); it != mymap.end(); it++) {
    cout << it->key << "\t" << it->value << "\n"
}

上述示例代码中,key的访问顺序为KeyType默认的由小到大顺序。
当KeyType为string时,则按照string的默认比较函数(ASCII)排序;
当KeyType为int时,则按照int的大小顺序排序;

如何自定义排序函数?
定义如下map容器:
map<string, int> mymap;

key为string类型,mymap的key默认按照string的比较函数排序,如想按照key的数值进行排序,则应该讲如上定义改为:
map<string, int, mycomp> mymap;

并定义mycomp:
struct mycomp {
  bool operator()(const string &k1, const string &k2) {
    if (atoi(k1.c_str()) < atoi(k2.c_str()))
      return true;
    else
      return false;
  }
}

即可完成map的自定义排序函数。

默认排序函数:
map<string, int> mymap;
mymap["11"] = 1;
mymap["1"] = 1;
mymap["2"] = 1;

//遍历mymap,key的输出顺序为:1, 11, 2



自定义排序函数:
map<string, int, mycomp> mymap;
mymap["11"] = 1;
mymap["1"] = 1;
mymap["2"] = 1;

//遍历mymap,key的输出顺序为:1, 2, 11

分享到:
评论

相关推荐

    Hadoop中MapReduce基本案例及代码(五)

    对相同分区的数据,按照key进行排序(默认按照字典排序)、分组。相同key的value放在一个集合中。 (可选)分组后对数据进行归约。 注意:MapReduce中,Mapper可以单独存在,但是Reducer不能存在。

    python入门到高级全栈工程师培训 第3期 附课件代码

    08 map函数filter函数 09 reduce函数 10 map reduce filter总结 11 内置函数part1 第17章 01 课前吹牛 02 zip方法 03 max和min高级使用 04 其他内置函数 05 文件操作的其他模式 第18章 01 上节课复习 02 文件...

    Hadoop硬实战 [(美)霍姆斯著][电子工业出版社][2015.01]_PDF电子书下载 带书签目录 高清完整版.rar )

    技术点22 通过多个reducer 对key 进行排序 4.3 抽样 技术点23 蓄水池抽样(reservoir 抽样) 4.4 本章小结 5 优化HDFS 处理大数据的技术 5.1 处理小文件 技术点24 使用Avro 存储大量小文件 5.2 通过...

    Hadoop实战(第2版)

    10.2.1 序列化和反序列化技术点64 载入日志文件10.2.2 UDF、分区、分桶和压缩技术点65 编写UDF 和压缩分区表10.2.3 数据合并技术点66 优化Hive 合并10.2.4 分组、排序和explain 10.3 本章小结11 ...

    超级有影响力霸气的Java面试题大全文档

    HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。 HashMap允许将null作为一个entry的key或者...

    java 面试题 总结

    HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。 HashMap允许将null作为一个entry的key或者...

    Hibernate中文详细学习文档

    8.3. 组件作为Map的索引(Components as Map indices ) 8.4. 组件作为联合标识符(Components as composite identifiers) 8.5. 动态组件 (Dynamic components) 9. 继承映射(Inheritance Mappings) 9.1. 三种...

    Hibernate+中文文档

    8.3. 组件作为Map的索引(Components as Map indices ) 8.4. 组件作为联合标识符(Components as composite identifiers) 8.5. 动态组件 (Dynamic components) 9. 继承映射(Inheritance Mappings) 9.1. 三种...

    Hibernate 中文 html 帮助文档

    8.3. 组件作为Map的索引(Components as Map indices ) 8.4. 组件作为联合标识符(Components as composite identifiers) 8.5. 动态组件 (Dynamic components) 9. 继承映射(Inheritance Mappings) 9.1. 三种策略 ...

    hibernate3.2中文文档(chm格式)

    8.3. 组件作为Map的索引(Components as Map indices ) 8.4. 组件作为联合标识符(Components as composite identifiers) 8.5. 动态组件 (Dynamic components) 9. 继承映射(Inheritance Mappings) 9.1. 三种...

    keyboard-shortcut-map-maker:一个网站工具,用于创建键盘快捷键或应用程序键绑定的可视化图

    重新排序键盘和部分的列表。 多种颜色选择。 计划功能: 添加和弦表/小节。 每个键盘的可折叠笔记部分。 自定义颜色。 完全控制关键文本。 不同的键盘布局。 该网站的一个HTML文件版本。 更好的样式+更多...

    freemarker总结

    该指令用于导入FreeMarker模板中的所有变量,并将该变量放置在指定的Map对象中,import指令的语法格式如下: 上面的代码将导入/lib/common.ftl模板文件中的所有变量,将这些变量放置在一个名为com的Map对象中. 创建...

    Hibernate3+中文参考文档

    8.3. 组件作为Map的索引(Components as Map indices ) 8.4. 组件作为联合标识符(Components as composite identifiers) 8.5. 动态组件 (Dynamic components) 9. 继承映射(Inheritance Mappings) 9.1. 三种策略 ...

    hibernate3.04中文文档.chm

    9.3. 组件作为Map的索引(Components as Map indices ) 9.4. 组件作为联合标识符(Components as composite identifiers) 9.5. 动态组件 (Dynamic components) 10. 继承映射(Inheritance Mappings) 10.1. 三种...

    最全Hibernate 参考文档

    8.3. 组件作为Map的索引(Components as Map indices ) 8.4. 组件作为联合标识符(Components as composite identifiers) 8.5. 动态组件 (Dynamic components) 9. 继承映射(Inheritance Mappings) 9.1. 三种策略 ...

    苹果8XPC和手机二合一完整版

    ads/ 存放广告js文件,可自定义名称, 在当前模版路径的config.xml 里配置好 html/ 存放html模版文件,可自定义名称,在后台配置好。 js/ 存放模版相关js文件 js/home.js 系统内置功能的JS函数库 css/ 存放样式表...

    HibernateAPI中文版.chm

    8.3. 组件作为Map的索引(Components as Map indices ) 8.4. 组件作为联合标识符(Components as composite identifiers) 8.5. 动态组件 (Dynamic components) 9. 继承映射(Inheritance Mappings) 9.1. 三种...

    hibernate 框架详解

    组件作为Map的索引(Components as Map indices ) 9.4. 组件作为联合标识符(Components as composite identifiers) 9.5. 动态组件 (Dynamic components) 10. 继承映射(Inheritance Mappings) 10.1. 三种...

    Hibernate教程

    9.3. 组件作为Map的索引(Components as Map indices ) 9.4. 组件作为联合标识符(Components as composite identifiers) 9.5. 动态组件 (Dynamic components) 10. 继承映射(Inheritance Mappings) 10.1. 三种...

Global site tag (gtag.js) - Google Analytics