码迷,mamicode.com
首页 > 其他好文 > 详细

Stl标准库-Tuple

时间:2017-10-16 02:14:14      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:cti   out   stl源码剖析   element   int   指定   complex   原则   大小   

摘要: 摘要: 技术在于交流、沟通,本文为博主原创文章转载请注明出处并保持作品的完整性

在前面我介绍过一次tuple,今天在书上也看到了tuple,那就在写一次吧.

tuple(元组),他的内部可以放任意类型的变量(有点类似结构体),前面介绍过它的递归继承,这次直接看基本使用吧

1.创建和取出元素

void testTuple()
{
    tuple<string, int, int, complex<double>> t;
    
    tuple<int, float, string> t1(41, 6.3, "nico");
    
    auto t2 = make_tuple(22,44,"make_tuple");
    
    //operator=
    get<1>(t1) = get<1>(t2);
    
    //取出指定下标元素 get<index>(tuple)
    cout << "testTuple operator=: " << get<1>(t1) << endl; 
}

技术分享

 

2.比较大小 : 比较原则为,先比较元素个数,然后按其元素的比较规则比较大小(比较大小的两个tuple,所含元素类型必须相同)

    void testTupleCompare()
    {
        tuple<int, float, string> t1(41, 6.3, "nico");
        auto t2 = make_tuple(22,44,"make_tuple");
        if(t1 < t2)
            cout<< "testTupleCompare t1 < t2" << endl;
        else
            cout << "testTupleCompare t1 > t2" << endl;
    }

 技术分享

 

 

3.分割元素 tie()

    void testTupleTie()
    {
        tuple<int, float, string> t1(41, 6.3, "nico");
        int a;
        int b;
        string str;
        tie(a,b,str) = t1;
        cout << "testTupleTie a="<< a << " b=" << b << " str="<< str << endl;
    }

 技术分享

 

 

4.tuple_size和tuple_element(取出元素类型)

    void testTupleSizeAndElement()
    {
        tuple<int, float, string> t(41, 6.2, "nico");
        cout << "testTupleSizeAndElement tuple_size = " << (tuple_size<decltype(t)>::value) << endl;//取出tuple元素个数

        typedef tuple_element<0,decltype(t)>::type T1;;//取出tuple元素类型
        typedef tuple_element<1,decltype(t)>::type T2;
        typedef tuple_element<2,decltype(t)>::type T3;

        cout << "index[0] element: " << typeid(T1).name()<<endl
                  << "index[1] element: " << typeid(T2).name()<< endl
                        << "index[2] element: " << typeid(T3).name() << endl;
    }

 技术分享

 

 

5.拼接tuple tuple_cat

    void testTupleCat()
    {
        tuple<int> t1(41);
        auto t2 = make_tuple(22);
        auto t3 = tuple_cat(t1,t2);
        cout << __FUNCTION__ << " t3: " << get<0>(t3) << " " << get<1>(t3) << endl;
    }

 技术分享

 

 

6.交换函数 swap()

    void testTupleSwap()
    {
        tuple<int> t1(41);
        auto t2 = make_tuple(22);
        t1.swap(t2);
        cout << __FUNCTION__ << " t1 " << get<0>(t1) << endl;
        cout << __FUNCTION__ << " t2 " << get<0>(t2) << endl;
    }

 

 技术分享

 

参考侯捷<<STL源码剖析>> 

Stl标准库-Tuple

标签:cti   out   stl源码剖析   element   int   指定   complex   原则   大小   

原文地址:http://www.cnblogs.com/LearningTheLoad/p/7675170.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!