C++使用sort对vector<vector<int>>按第二元素降序排序出错如何解决
问题错误点说明
- 比较函数的参数类型错误:
sort遍历vector<vector<int>>类型的容器时,每次传入比较函数的是单个一维子vector,类型为vector<int>,你写的参数是二维vector<vector<int>>类型,还额外加了一层[0]取第一个元素,逻辑完全不符合排序要求。 - 优化建议:比较函数参数最好加
const修饰,既避免意外修改元素值,也符合C++标准对排序比较函数的入参要求,避免部分编译器报错。
修正后的完整代码
static bool compareInterval(const vector<int>& v1, const vector<int>& v2) { // 直接比较两个一维子vector的下标1元素,降序排列 return v1[1] > v2[1]; } sort(boxTypes.begin(), boxTypes.end(), compareInterval);
运行上述代码就能得到你预期的[[5,10],[3,9],[4,7],[2,5]]排序结果。
内容的提问来源于stack exchange,提问作者Turing101
相关产品推荐
相关产品推荐

