📜  C++中元组向量的排序(升序)(1)

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

C++中元组向量的排序(升序)

在C++中,使用元组可以将多个相关的变量组合成一个整体,方便操作和传递。而对于元组向量的排序,我们可以借助STL中的sort函数来实现。

元组向量的定义
#include <vector>
#include <tuple>

std::vector<std::tuple<int, std::string>> vec;   // 定义一个元组向量
vec.emplace_back(1, "aaa");                     // 向向量中添加元组
vec.emplace_back(2, "bbb");
vec.emplace_back(3, "ccc");
vec.emplace_back(4, "ddd");
vec.emplace_back(5, "eee");

上面的代码定义了一个元组向量,其中每个元组包含一个int类型的整数和一个string类型的字符串。接下来我们将利用sort函数对该向量进行升序排列。

元组向量的排序

使用sort函数时需要传入一个比较函数,即对元组进行升序或降序排列的规则。我们可以使用lambda表达式来定义这个比较函数。

// 升序排序
std::sort(vec.begin(), vec.end(), [](const auto& x, const auto& y) {
    return std::get<0>(x) < std::get<0>(y);   // 按照第一个元素(即int类型的整数)进行升序排列
});

上面的代码使用lambda表达式定义了一个比较函数,按照元组的第一个元素进行升序排列。其中,std::get函数用于访问元组的某一个元素,第一个参数表示元组本身,第二个参数表示元素的索引(从0开始)。

完整代码
#include <iostream>
#include <vector>
#include <tuple>
#include <algorithm>

int main() {
    std::vector<std::tuple<int, std::string>> vec;
    vec.emplace_back(1, "aaa");
    vec.emplace_back(2, "bbb");
    vec.emplace_back(3, "ccc");
    vec.emplace_back(4, "ddd");
    vec.emplace_back(5, "eee");

    std::sort(vec.begin(), vec.end(), [](const auto& x, const auto& y) {
        return std::get<0>(x) < std::get<0>(y);
    });

    for (const auto& t : vec) {
        std::cout << std::get<0>(t) << " " << std::get<1>(t) << std::endl;
    }

    return 0;
}

以上就是C++中元组向量的排序(升序)的介绍。