一、向量中的结构体排序
需要先将结构体初始化后压入向量中,然后通过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());
}
};