📜  C++中对对的排序向量设置1(按第一和第二的顺序排序)(1)

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

C++中的排序向量设置1

当需要对向量中的元素进行排序时,C++的标准库中提供了很多方便快捷的排序函数,其中包括用于排序的向量容器。

本文将介绍如何使用C++中的排序向量容器对数据进行排序。具体地,我们将按照第一和第二个元素的顺序对元素进行排序。

排序向量容器

在C++中,我们可以使用 std::vector 容器来存储元素,并使用 std::sort 函数对其进行排序。不过,由于我们需要按照元素的第一和第二个值进行排序,所以我们需要自定义比较函数。

比较函数应该采用如下格式:

bool myCompare(const myType& a, const myType& b) {
    // 按照第一和第二的顺序排序
}

其中 myType 表示我们存储在向量中的元素类型。

按照第一和第二个元素排序

假设我们有一个包含多个二元组的向量 vec,每个二元组都包含两个整数。我们需要按照第一个值和第二个值的顺序对这些二元组进行排序,我们可以实现如下自定义比较函数:

bool myCompare(const std::pair<int, int>& a, const std::pair<int, int>& b) {
    if (a.first != b.first) {
        return a.first < b.first;
    } else {
        return a.second < b.second;
    }
}

上述函数中,首先将第一个值进行比较,若两个值不相等,则按照第一个值大小进行排序。若两个值相等,则按照第二个值大小进行排序。

接下来,我们可以使用 std::sort 函数对向量进行排序:

std::vector<std::pair<int, int>> vec = {{1, 2}, {3, 4}, {2, 3}, {1, 3}, {3, 2}};

std::sort(vec.begin(), vec.end(), myCompare);

以上代码中,我们首先声明了一个包含多个二元组的向量 vec,然后对向量按照自定义比较函数 myCompare 进行排序。

最后,我们可以使用循环遍历该向量,检查是否已经按照第一和第二个元素的顺序排序:

for (const auto& p : vec) {
    std::cout << p.first << " " << p.second << std::endl;
}

运行上述代码,输出将会为:

1 2
1 3
2 3
3 2
3 4

可以看到,向量按照第一和第二个元素的顺序排序成功。

总结

本文介绍了如何使用C++中的排序向量容器对数据进行排序,具体地按照元素的第一和第二个值进行排序。通过本文的学习,读者可以掌握如何自定义比较函数,并了解如何使用 std::sort 函数进行排序。