当前位置: 首页 > news >正文

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

文章目录

  • 一、`tuple` 模版
    • 1、定义
    • 2、特点
    • 3、常用操作

一、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;  
    }
    

http://www.mrgr.cn/news/55237.html

相关文章:

  • linux file结构体与inode结构体
  • 035_基于php助农生鲜销售系统的设计与实现
  • WEB前端使用标签制作网页
  • 内网穿透很简单
  • 实验报告3-数据库框架实现数据操作2
  • Vue框架
  • 跟风考的PMP帮我拿到了offer
  • Unity3D功耗和发热分析与优化详解
  • Android中使用bottomnavigation实现底部导航栏
  • CST软件如何验证“平面波+探针”的频域结果
  • 怎么用六西格玛增强解决问题的逻辑性?
  • ATTCK 框架讲解
  • 建议使用requestAnimationFrame替代定时器setInterval、setTimeout完成页面动画
  • SAP MDG —— MDG on S/4HANA 2023 FPS02 创新汇总 AI功能首次发布!
  • 七天入门LLM大模型 |提示词工程-Prompt Engineering
  • Django
  • sentinel原理源码分析系列(八)-熔断
  • JVS逻辑引擎,API接入数据加解密操作详解
  • Java EE规范
  • 供电电压和逻辑电压
  • Visual Studio快捷添加代码片段的方法
  • 时装购物|基于springBoot的时装购物系统设计与实现(附项目源码+论文+数据库)
  • 通过多方面去评估EDM电子邮件群发营销的效果
  • 基于Java+SpringBoot+Vue的师生健康信息管理系统
  • 浏览器播放rtsp视频流解决方案
  • Web3的核心概念:去中心化如何改变互联网