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

std::tuple 用法

std::tuple 是 C++11 引入的模板类,用来存储多个不同类型的值,类似于 Python 的元组。你可以把它看作是一种“组合多个变量在一个对象中”的方式。


✅ 基本用法

#include <tuple>
#include <iostream>int main() {std::tuple<int, std::string, double> person(25, "Alice", 52.3);std::cout << "Age: " << std::get<0>(person) << std::endl;std::cout << "Name: " << std::get<1>(person) << std::endl;std::cout << "Weight: " << std::get<2>(person) << std::endl;return 0;
}

🔧 创建元组的方式

auto t1 = std::make_tuple(1, "hello", 3.14);   // 自动推导类型
std::tuple<int, std::string> t2(42, "test");   // 显式声明

🎯 访问元素(使用 std::get<N>(tuple)

auto val = std::get<0>(t1);  // 获取第一个元素

注意:std::get<>() 中的索引是编译时常量(不能用变量)。


🎁 解包(结构化绑定,C++17 起)

auto [a, b, c] = t1;  // a = 1, b = "hello", c = 3.14

🔁 修改元素

std::get<1>(t1) = "world";  // 修改第二个元素

🔄 合并/拼接元组(std::tuple_cat

auto t3 = std::tuple_cat(t1, std::make_tuple(true, 99));

🧮 获取元组大小(std::tuple_size

constexpr std::size_t size = std::tuple_size<decltype(t1)>::value;

🧬 获取元素类型(std::tuple_element

using FirstType = std::tuple_element<0, decltype(t1)>::type;

📌 示例函数返回多个值

std::tuple<int, double, std::string> getData() {return std::make_tuple(42, 3.14, "OK");
}int main() {auto [id, score, status] = getData();std::cout << id << ", " << score << ", " << status << "\n";
}

🧠 总结

功能用法示例
创建元组std::make_tuple(1, "hi", 3.14)
获取元素std::get<1>(tuple)
修改元素std::get<0>(tuple) = 99
解包(C++17)auto [x, y] = tuple;
获取大小std::tuple_size<decltype(t)>::value
合并元组std::tuple_cat(t1, t2)

http://www.xdnf.cn/news/6875.html

相关文章:

  • yocto项目例子
  • 单元化架构
  • AutoCompose - 携程自动编排框架的简单介绍
  • 昇腾NPU环境搭建
  • FC7300 IO 无法正常输出高低电平问题排查
  • C++:赋值重载
  • 开放世界地形渲染:以三角洲行动为例(下篇)
  • 集星云推碰一碰:跨平台发布与源码定制全解析OEM源码部署
  • 携程token纯算分析
  • 【程序员AI入门:模型】19.开源模型工程化全攻略:从选型部署到高效集成,LangChain与One-API双剑合璧
  • 【匹配】Gotoh
  • RoboDual-上海交大-2025-2-6-开源
  • PCIe Switch 问题点
  • 【知识产权出版社-注册安全分析报告-无验证方式导致安全隐患】
  • 文章记单词 | 第82篇(六级)
  • 如何与“不安”和平共处?
  • 召回12:曝光过滤 Bloom Filter
  • 03算法学习_977、有序数组的平方
  • 经典案例 | 筑基与跃升:解码制造企业产供销协同难题
  • Go语言之路————并发
  • 【基础】Windows开发设置入门5:WinGet开发者完全指南(AI整理)
  • Spring 框架中适配器模式的五大典型应用场景
  • 轨道炮--范围得遍历,map巧统计
  • 强化学习算法实战:一个例子实现sarsa、dqn、ddqn、qac、a2c、trpo、ppo
  • RAGFlow升级到最新0.18.0新手指南
  • 【全解析】EN18031 标准下的 AUM 身份认证机制[上篇]
  • 国产三维CAD皇冠CAD(CrownCAD)建模教程:插接箱
  • B2C 商城转型指南:传统企业如何用 ZKmall模板商城实现电商化
  • 线上问题排查:JVM OOM问题如何排查和解决
  • Protobuf——Protocol Buffer详解(1)