c++11新容器 tuple

tuple顾名思义是元组的意思,提起元组应该并不陌生,很受欢迎的python就有元组的概念,大家感兴趣可以去看看,这里主要介绍tuple的结构和常用使用方法。

首先来看官方给出元组的说明:元组(tuple)由预先确定数量的多种对象组成.元组可以看作是struct数据成员的泛化.TR1 tuple类型的C++11版本获益于像可变参数模板这样的C++11语言特性.TR1版本的元组需要一个由实现定义的包含的类型的最大数目,而且需要大量的宏技巧来实现.相比之下,C++11版本的不需要显式的实现定义的最大类型数目.尽管编译器有一个内部的模板实例化的最大递归深度,但C++11版的元组不会把它暴露给用户。

元组(tuple)结构:

#// 类版本声明
template<class _This,
    class... _Rest>
    class tuple<_This, _Rest...>
        : private tuple<_Rest...>
        {...}

元组使用代码:

#include<iostream>
#include<algorithm>
#include <tuple> 
using namespace std;

int main() {


    typedef std::tuple <int, double, long &, const char *> test_tuple;
    long lengthy = 12;
    test_tuple proof(100, 3.1415, lengthy, "tuple!");
    lengthy = std::get<0>(proof);  // 把'lengthy' 赋值为100.
    std::get<3>(proof) = " Beautiful tuple!";  // 修改元组的第四个元素


    size_t num = std::tuple_size<decltype(proof)>::value;//获取元组元素个数
    cout << "num= "<<num << endl;

    //获取第1个值的元素类型                                                   
    std::tuple_element<1, decltype(proof)>::type cnt = std::get<1>(proof);
    std::cout << "cnt = " << cnt << std::endl;

    //比较  
    std::tuple<int, int> ti(24, 48);
    std::tuple<double, double> td(28.0, 56.0);
    bool b = (ti < td);
    std::cout << "b = " << b << std::endl;

    return 0;
}

只是浅谈tuple的使用,希望能给大家有所帮助。需要对源码更加深入的了解,请访问:

http://www.jb51.net/article/70740.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值