C++向量中的结构体和map按value降序排序

一、向量中的结构体排序

需要先将结构体初始化后压入向量中,然后通过sort进行升降序排序。

class Solution {
    typedef struct Monkey{ 
        int index;      
        bool isRight;   
    };
    static bool cmp(Monkey m1, Monkey m2){
        return m1.index > m2.index; // 降序排序
    }
private:
    	vector<Monkey> vecMonkey;
public:
    void fun(vector<char>& arr){
    	// 声明结构体变量并初始化
   		Monkey monkey;
        monkey.index = 10;
        monkey.isRight = true;
        vecMonkey.push_back(monkey); // 将初始化的结构体变量压入向量中
        
        monkey.index = 20;
        monkey.isRight = false;
        vecMonkey.push_back(monkey);
        // 按结构体中的index降序排序,cmp表示规则
        sort(vecMonkey.begin(), vecMonkey.end(), cmp);
    }
};

二、向量中的map排序(按value)

需要把map中的键值对压到向量中,然后将向量作为参数传入内置的sort()中进行排序。

class Solution {
private:
	map<char, int> m;                 
    vector<pair<char, int> > vecPair; // 将映射转换为向量方可排序
public:
    void fun(vector<char>& arr){
		m['a'] = 4;
		m['b'] = 6;
		// map按value降序排序,得到降序的vecPair向量
        MapSortOfValue();
    }
    void MapSortOfValue(){
        for(map<char,int>::iterator it = m.begin();it != m.end();it++)
            vecPair.push_back(make_pair(it->second, it->first)); // 按value排序,所以需要前后倒置
        // 使用rbegin()降序排序
        sort(vecPair.rbegin(), vecPair.rend());
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SL_World

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值