本文总结了C++调用sort函数实现降序排序的简便写法,可以在日常算法题目中使用以节省时间,主要写法如下:
- 使用greater,使用场景为在对基本类型元素进行排序、不需要自定义比较规则时,如int、string等,用法示例如下:
// 测试数据
// vector<int> v1({2,3,1,5,2,7});
// vector<string> v2({"abc", "ab", "bc", "bcd"});
sort(v1.begin(), v1.end(), greater<int>());
sort(v2.begin(), v2.end(), greater<string>());
// 打印输出
// cout<<"vector<int>: [";
// for(int i=0; i<v1.size(); i++){
// cout<<v1[i]<<",";
// }
// cout<<"]\n";
// cout<<"vector<string>: [";
// for(int i=0; i<v2.size(); i++){
// cout<<v2[i]<<",";
// }
// cout<<"]\n";
控制台输出结果为:
- 使用lambda匿名函数,使用场景为对自定义类型或其他复杂类型进行排序、需要自定义比较规则时,如pair、自定义类等,用法示例如下:
// 测试数据
// vector<pair<int,int> > v3({
// pair<int,int>(1,3),
// pair<int,int>(2,4),
// pair<int,int>(5,4),
// pair<int,int>(7,0)
// });
sort(v3.begin(), v3.end(), [](pair<int,int> a, pair<int,int> b)->bool{
return a.second>b.second;
});
// 打印输出
// cout<<"vector<pair<int,int>>: [";
// for(int i=0; i<v2.size(); i++){
// cout<<"("<<v3[i].first<<","<<v3[i].second<<"),";
// }
// cout<<"]\n";
控制台输出结果为:
补充,lambda匿名函数的常用写法(更详细的写法可参照文章C++11 lambda匿名函数用法详解)如下:
[外部变量访问方式说明符] (参数) () -> 返回值类型{
函数体;
};