C++ STL map的自定义排序

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


  1. map按键值Key排序

  • 默认按照less<key>升序排列
#include<iostream>
#include<map>
using namespace std;
int main()
{
   
    srand((unsigned)time(NULL));
    multimap<int,int>mp;
// multimap第三个参数默认为less<Key>,即 less<int>
    int n;
    cin>>n;
    int a,b;
    for(int i=0; i<n; i++)
    {
   
        a=rand()%4;
        b=rand()%4;
        //插入
        mp.insert(pair<int,int>(a,b));
    }
    map<int,int>::iterator iter;
    //遍历输出
    for(iter=mp.begin(); iter!=mp.end(); iter++)
        cout<<iter->first<<" "<<iter->second<<endl;
    return 0;
}

输入8,Key升序,Value随机:
1 1
1 1
1 2
2 1
3 3
3 0
3 3
3 2

  • 定义map时,用greater< Key>实现按Key值递减插入数据
multimap<int,int,greater<int> >mp;
//注意<int>后空一格

输入8,Key值降序排列,Value随机:
3 0
3 3
3 1
2 3
2 0
1 0
0 0
0 0

  • 当Key值为自定义的类时
  1. 写一个函数对象1(仿函数)
#include<iostream>
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值