C++ 新特性 | C++ 11 | tuple 模版

一、tuple 模版

1、定义

std::tuple 是在 C++11 版本中引入的。它是 C++ 标准库中的一个类模板,用于创建一个固定大小的、可以包含不同类型元素的集合std::tuple 提供了一种灵活的方式来组合多个不同类型的值,而无需定义一个新的结构体或类。这使得它在需要返回多个值或传递多个参数时非常有用。

2、特点

  • 大小固定,可以包含不同类型的元素。
  • 一旦 tuple 被创建,其内部的元素类型就固定了,不能改变。
  • tuple元素类型不能修改,但是,可以修改元素值。

3、常用操作

  • 创建 tuple

    std::tuple<int, double> t1(10, 20.5);  
    std::tuple<int, double> t2 = std::make_tuple(30, 40.5);
    
  • 访问tuple元素

    使用 std::get<index>() 访问元素,例如:

    // 创建一个包含 int, double 和 std::string 的 tuple  
    std::tuple<int, double, std::string> myTuple(1, 3.14, "Hello, Tuple!");  
    
    // 使用 std::get<index>() 访问 tuple 中的元素  
    std::cout << "Integer: " << std::get<0>(myTuple) << std::endl;  
    std::cout << "Double: " << std::get<1>(myTuple) << std::endl;  
    std::cout << "String: " << std::get<2>(myTuple) << std::endl;  
    
  • 获取元素个数

    要获取 std::tuple 中元素的个数,可以使用 std::tuple_size 模板结构。例如:

    #include <iostream>  
    #include <tuple>  
      
    int main() {  
        // 创建一个包含 int, double 和 std::string 的 tuple  
        std::tuple<int, double, std::string> myTuple;  
      
        // 获取 tuple 的元素个数  
        constexpr std::size_t tupleSize = std::tuple_size<decltype(myTuple)>::value;  
      
        // 输出元素个数  
        std::cout << "The number of elements in the tuple is: " << tupleSize << std::endl;  
      
        return 0;  
    }
    
  • 修改元素值

    std::tuple 存储的元素是可以被修改的。一旦你创建了一个 std::tuple 并初始化了它的元素,你可以通过 std::get<index>() 函数模板来获取到元素的引用,然后通过这个引用来修改元素的值。例如:

    #include <iostream>  
    #include <tuple>  
      
    int main() {  
        // 创建一个包含 int, double 和 std::string 的 tuple  
        std::tuple<int, double, std::string> myTuple(1, 3.14, "Hello, Tuple!");  
      
        // 修改 tuple 中的元素  
        std::get<0>(myTuple) = 42;       // 修改第一个元素为 42  
        std::get<1>(myTuple) = 2.71828;  // 修改第二个元素为 2.71828  
        std::get<2>(myTuple) = "Goodbye, Tuple!"; // 修改第三个元素为 "Goodbye, Tuple!"  
      
        // 输出修改后的元素值  
        std::cout << "Modified Tuple:" << std::endl;  
        std::cout << "Integer: " << std::get<0>(myTuple) << std::endl;  
        std::cout << "Double: " << std::get<1>(myTuple) << std::endl;  
        std::cout << "String: " << std::get<2>(myTuple) << std::endl;  
      
        return 0;  
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值