C++元组 - tuple

本文深入探讨了C++中的std::tuple,包括如何创建和使用元组对象,利用std::get获取元素,以及std::make_tuple在元素类型自动推导中的作用。元组允许函数返回多个值,提高了代码效率。

本文讨论什么是std::tuple以及其使用方法。

std::tuple

std :: tuple是可以将一至多个类型绑定在一起的类型。创建元组对象时,需要将元素的类型指定为模板参数。我们可以从函数中返回该元组对象,它可以帮助我们从一个函数返回多个值从而避免创建不必要的结构。

  • 创建元组示例

    声明一个tuple,它是是个int,char,string的集合

    tuple<int, char, string>tmp(1, '2', "3");
    
  • 获取元素

    从tuple中获取值需要用到std::get函数,以索引值作为模板参数

    int i = get<0>(tmp);
    char c = get<1>(tmp);
    string s = get<2>(tmp);
    
  • 注意事项

    1. 获取索引大于元组封装的元素数量的任何元素将导致编译时错误。
    2. 从元组获取元素时使用错误的类型也会导致错误。
    3. 应该以常量类型作为get的模板参数,否则会导致编译时间错误。
    auto a = get<3>(tmp);	//超出范围
    auto b = get<i>(tmp);	//只能用常量
    i = get<2>(tmp);		//使用错误的类型
    

进阶:std::make_tuple

注意编译器无法自动推导出tuple类型,例如:

auto tmp{1,'1',"1"};	//编译错误

C++11提供了make_tuple来解决元素个数很多时声明tuple的不便。它通过从参数类型推导出元组中元素的目标类型来创建std :: tuple对象。

auto a = make_tuple(1, '2', "3");

以上的代码中,make_tuple接受三个参数,并自动推导它们的类型为int,char和string。然后,它在内部创建了一个 tuple <int,double,string>对象,并将其初始化并返回。因此,基本上make_tuple有助于自动推导元组类型。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值