• 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;
    }
    
  • 相关阅读:
    poj 3255
    (DP) bzoj 2091
    (最短路) bzoj 2118
    (点双联通分量) poj 2942
    (树直径) bzoj 1509
    (离线处理+BFS) poi Tales of seafaring
    (并查集+DFS) poi guilds
    (记忆话搜索)POI Fibonacci Representation
    (DP) POI Bytecomputer
    (DP) bzoj 1296
  • 原文地址:https://www.cnblogs.com/WindSun/p/13670330.html
Copyright © 2020-2023  润新知