std::tuple是C++11引入的编译期类型安全、零开销异构元组;支持make_tuple构造、get或结构化绑定访问、tuple_size_v和tuple_element_t获取元信息,常用于多返回值、map键、模板元编程等场景。

std::tuple 是 C++11 引入的轻量级固定大小异构容器,用来打包多个类型不同的值,类似 Python 的元组,但编译期类型安全、零运行时开销。
推荐用 std::make_tuple,它自动推导类型,写法简洁:
auto t1 = std::make_tuple(42, 3.14, std::string("hello")); // int, double, string
也可以显式指定类型并构造:
std::tuple<int, double, std::string> t2(100, 2.718, "world");
注意:空 tuple 也合法:std::tuple t3;
立即学习“C++免费学习笔记(深入)”;
传统方式是通过 std::get(tuple) 获取,索引从 0 开始,编译期检查:
int a = std::get(t1); // 得到 42double b = std::get(t1); // 得到 3.14std::string s = std::get(t1); // 得到 "hello"C++17 支持更直观的 结构化绑定:
auto [x, y, z] = t1; // x:int, y:double, z:string —— 类型自动推导,顺序严格对应
绑定变量名可任意,但数量和顺序必须匹配 tuple 元素个数。
tuple 的长度在编译期确定,用 std::tuple_size_vstd::tuple_size<t>::value</t>:
static_assert(std::tuple_size_v<decltype(t1)> == 3);
获取某位置元素的类型,用 std::tuple_element_t:
static_assert(std::is_same_v<std::tuple_element_t<1, decltype(t1)>, double>);
return std::make_tuple(result, status, count);
std::map<:tuple std::string>, double> m;</:tuple>
std::apply 拆包调用可变参数函数基本上就这些。tuple 不复杂但容易忽略细节——类型严格、索引编译期检查、不可动态增删,用对了很干净利落。
以上就是c++++中的tuple元组怎么用_c++ std::tuple创建与访问【C++11】的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号