zoukankan      html  css  js  c++  java
  • STL标准库-Tuple

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

    在前面我介绍过一次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源码剖析>> 

  • 相关阅读:
    常用PHP函数整理
    Linux常用命令整理
    Linux怎样创建FTP服务器
    设置ssh只允许用户从指定的IP登陆
    解决数据库不能远程连接方法
    [记录]ns_error_unexpected firefox tinymce
    $.parseJSON 将json 对象转换为array
    Flash cs6 帧上的菱形原来是关键帧
    [记录]java.math.biginteger cannot be cast to java.lang.long
    Flash cs6 如何从FLA 文件导出sound文件
  • 原文地址:https://www.cnblogs.com/LearningTheLoad/p/7675170.html
Copyright © 2011-2022 走看看