如何在C++中对pair类型的vector进行降序排序?
对vector<pair<int,int>>进行降序排序的正确方法
你当前使用的代码sort(v.begin(),v.end(),greater<int> ())会触发编译错误,原因是greater<int>仅适用于int类型的比较,而你的容器元素是pair<int,int>,类型不匹配。
以下是几种可行的正确实现方式:
使用
greater<pair<int,int>>作为比较器,它会遵循pair的默认比较规则(先比较第一个元素,第一个元素相等时再比较第二个元素)进行降序排序:sort(v.begin(), v.end(), greater<pair<int, int>>());自定义lambda表达式,实现更灵活的排序逻辑(比如优先按第一个元素降序,第一个元素相等时按第二个元素降序):
sort(v.begin(), v.end(), [](const pair<int, int>& a, const pair<int, int>& b) { if (a.first != b.first) { return a.first > b.first; } return a.second > b.second; });若需仅按第二个元素降序排序,同样可以通过lambda实现:
sort(v.begin(), v.end(), [](const pair<int, int>& a, const pair<int, int>& b) { return a.second > b.second; });
内容的提问来源于stack exchange,提问作者eren_yeager08
相关产品推荐
相关产品推荐

