c++ tuple

使用场景
  • 使用时需要引入头文件 #include <tuple>

  • 减少许多简单结构体的定义

  • 用于函数返回多个返回值

tuple辅助类与方法
  • std::make_tuple:用来创建一个tuple对象

  • std::get<>():获取tuple指定位置的值

  • tuple_size<>::value:获取tuple的大小

  • ignore:用于tie解包的占位符

tie功能
  • 将多个普通成员临时绑定成一个tuple,多用于解包结构体的比较
tuple与pair的区别
  • tuple是pair的一个扩展,pair只能存储两个元素,tuple可以存储多个
示例
int main()
{
    using Info = std::tuple<std::string, std::string, int>; // 类型定义, 等价于 struct {std::string, std::string, int};
    Info tup1 = std::make_tuple("t00512600", "tongyishu", 24); // make_tuple 的使用
    std::cout << "get<0>() : " << std::get<0>(tup1) << std::endl; // get<>() 的使用
    std::cout << "get<1>() : " << std::get<1>(tup1) << std::endl; // get<>() 的使用
    std::cout << "get<2>() : " << std::get<2>(tup1) << std::endl; // get<>() 的使用

    std::cout << "size : " << std::tuple_size<Info>::value << std::endl; // tuple_size 的使用

    int age;
    std::string id;
    std::string name;
    std::tie(id, std::ignore, age) = tup1; // tie 和 ingore 的使用, 临时将 id, name, age 绑定成一个 tuple 的类型
    std::cout << "id : " << id << std::endl;
    std::cout << "name : " << name << std::endl;
    std::cout << "age : " << age << std::endl;
    // 输出结果如下:
    // get<0>() : t00512600
    // get<1>() : tongyishu
    // get<2>() : 24
    // size : 3
    // id : t00512600
    // name :
    // age : 24
}
原文地址:https://www.cnblogs.com/tongyishu/p/13334929.html