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) |