C++ tuple元组

tuple元组

tuple是一个元组容器,可以用于函数返回多个值, 一个tuple元组可以有任意数量的成员
tuple的两种初始化方式:

tuple<int, int> t1(1, 2);
tuple<int, int> t2{1, 2};

make_tuple用于生成tuple对象,和pair和make_pire类似:

auto t3 = make_tuple(1, 2);

tuple的成员数量没有限制
访问成员使用一个get的标准库函数模板,为了指定一个显示模板,必须指定想要访问的第几个成员。

tuple<string, string, int> item = make_tuple("Hello", "World", 12345);
auto val = get<0>(item)

尖括号中表示的是下标数,从0开始。

获得成员数量和类型

使用两个辅助类模板查询tuple元组的类型和变量。

typedef decltype(item) trans;   //trans是item的类型
size_t sz = tuple_size<trans>::value;   //返回trans类型对象中成员的数量
tuple_element<1, trans>::type cnt = get<1>(item);   //cnt是int类型

tuple使用实例

tuple<string, int> giveName(void)
{
    tuple<string, int> t("Hello", 123);
    return t;
}

int main(int argc, char** argv)
{
    //函数返回tuple元组容器
    auto a = giveName();
    cout << get<0>(a) << "-" << get<1>(a) << endl;

    //得到元组得个数
    tuple<int, double, string> t(64, 1.23, "Hello");
    tuple<string, string, int> t1 = make_tuple("Hello", "World", 12345);

    //得到t元组元素得个数
    size_t num = tuple_size<decltype(t)>::value;    
    cout << num << endl;    //3

    //获得t元组第二个元素得值
    tuple_element<1, decltype(t)>::type val = get<1>(t);
    cout << "val = " << val << endl;

    //比较
    tuple<int, int> t2(24, 48);
    tuple<double, double> t3(28.0, 56.0);
    bool b = (t2 < t3);
    cout << "b = " << b << endl;

    return 0;
}
原文地址:https://www.cnblogs.com/WindSun/p/13670330.html