📅  最后修改于: 2023-12-03 14:50:52.190000             🧑  作者: Mango
在 C++ 中,可以使用 sort
算法对二维向量进行排序。下面将介绍如何使用 sort
算法实现对二维向量按照第一关键字升序、第二关键字降序排序。
C++ 的 sort
算法默认按照升序排序,可以自定义排序方法来实现降序排序。假设要按照二维向量的第一维进行排序,当第一维相同时,再按照第二维进行排序,可以使用以下方法:
bool cmp(const vector<int>& a, const vector<int>& b) {
if (a[0] != b[0]) {
return a[0] < b[0];
} else {
return a[1] > b[1];
}
}
在这个比较函数中,首先比较两个向量的第一维,如果不相等则返回第一维更小的向量,否则返回第二维更大的向量。
下面是一个二维向量排序的示例代码:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(const vector<int>& a, const vector<int>& b) {
if (a[0] != b[0]) {
return a[0] < b[0];
} else {
return a[1] > b[1];
}
}
int main() {
vector<vector<int>> v = {{2, 3}, {1, 4}, {2, 2}, {1, 3}, {2, 1}};
sort(v.begin(), v.end(), cmp);
for (const auto& vv : v) {
cout << "(" << vv[0] << ", " << vv[1] << ") ";
}
return 0;
}
输出结果为:
(1, 4) (1, 3) (2, 3) (2, 2) (2, 1)
可以看到,二维向量按照第一关键字升序、第二关键字降序排序成功。
在 C++ 中,可以使用 sort
算法对二维向量进行排序。通过自定义比较函数,可以实现按照指定的键进行排序。需要注意的是,默认情况下 sort
算法是按照升序排序的,如果需要实现降序排序则需要自定义排序方法。