c++ map自定义排序
来源:互联网 发布:阿里的数据平台 编辑:程序博客网 时间:2024/05/22 03:24
在c++中用到map时,如果key是自定义的struct,那么需要自己定义比较函数。因为只有基本类型有默认的比较方法。
typedef struct myKey{int nId;int nVersion;int nNote;}myKey;///自定义map的valuetypedef struct myValue{string strText;}myValue;struct cmp_key{bool operator()(const myKey &k1,const myKey &k2) const{if(k1.nId != k2.nId){return k1.nId < k2.nId;}if(k1.nVersion != k2.nVersion){return k1.nVersion < k2.nVersion;}if(k1.nNote != k2.nNote){return k1.nNote < k2.nNote;}return false;}};int _tmain(int argc, _TCHAR* argv[]){map<myKey,myValue,cmp_key> mymap;myKey k1;k1.nId = 1;k1.nVersion = 2;k1.nNote = 3;myValue v1;v1.strText = "k1: id=1 version=2 note=3";myKey k2;k2.nId = 2;k2.nVersion = 2;k2.nNote = 3;myValue v2;v2.strText = "k1: id=2 version=2 note=3";myKey k3;k3.nId = 2;k3.nVersion = 2;k3.nNote = 5;myValue v3;v3.strText = "k1: id=2 version=2 note=5";mymap[k1] = v1;mymap[k2] = v2;mymap[k3] = v3;for(auto it = mymap.begin(); it != mymap.end(); ++it){cout << it->second.strText.c_str() << endl;}return 0;}输出:
k1: id=1 version=2 note=3
k1: id=2 version=2 note=3
k1: id=2 version=2 note=5
对value排序的话,用vector<pair>代替。
0 0
- 自定义map的排序
- List<Map> 自定义排序
- c++ map自定义排序
- 自定义函数使用map排序
- C++ map 自定义排序规则
- map key值自定义排序
- 【原创】map容器自定义排序
- 【C++】map根据value排序
- C#List自定义排序
- [C/C++]map自定义比较函数
- [C/C++]map自定义比较函数
- c++ 自定义排序函数的 map
- Java中Map的自定义排序
- C++map如何按值排序
- 如何为排序,查找,set,map提供自定义比较功能
- JAVA对map按照值进行自定义排序
- 自定义MAP
- Map排序
- nebula_level00
- Android 上传图片,服务器接收图片实现
- LinkedList源码分析
- UIViewController之间的传值方式二 通知
- JavaScript 笔记 —— 鼠标事件的浏览器差异
- c++ map自定义排序
- JAX-RS 2.0 中 REST 的四种服务类型
- jersey 框架传输格式 (2) xml
- js日期多少小时前、多少分钟前、多少秒前
- Laravel Sublime Text 代码提示插件
- Laravel 上手教程之实现用户注册和登录
- laravel 使用自定义视图分页
- Linode VPS(CentOS) 防火墙配置
- linux 安装字体