C++ STL map的自定义排序 您所在的位置:网站首页 map改变key值 C++ STL map的自定义排序

C++ STL map的自定义排序

2023-12-06 20:10| 来源: 网络整理| 查看: 265

文章目录 map按键值Key排序当Key值为自定义的类时 map按值Value排序

map没有随机迭代器,只有顺序迭代器,所以不能用sort

map按键值Key排序 默认按照less升序排列 #include #include using namespace std; int main() { srand((unsigned)time(NULL)); multimapmp; // multimap第三个参数默认为less,即 less int n; cin>>n; int a,b; for(int i=0; i int num,i; }IntPlus; //自定义比较规则 //注意operator是(),不是< struct Cmp { bool operator () (IntPlus const &a,IntPlus const &b)const { if(a.num!=b.num) return a.num a=rand()%4; b=rand()%4; intplus.num=a; intplus.i=b; mp.insert(pair(intplus,i)); } map::iterator iter; for(iter=mp.begin(); iter!=mp.end(); iter++) cout //当num不等时 //前一个对象的num>后一个时返回true,降序排列。 //反之升序排列 if(num!=intplus.num) return num>intplus.num; //当num相等时 //前一个对象的i bool operator () (IntPlus const &a,IntPlus const &b)const { if(a.num!=b.num) return a.num if(a.first.i!=b.first.i) return a.first.ib.second; } }

上面需重新定义Key升序排列,否则sort之后仅按Value降序排列,Key值被打乱。

int main() { srand((unsigned)time(NULL)); multimapmp; int n; cin>>n; int a,b; IntPlus intplus; for(int i=0; i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有