📜  在 C++ 中对对的二维向量进行排序(1)

📅  最后修改于: 2023-12-03 14:50:52.190000             🧑  作者: Mango

在 C++ 中对二维向量进行排序

在 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 算法是按照升序排序的,如果需要实现降序排序则需要自定义排序方法。