使用std::make_tuple创建tuple,std::get访问元素,std::tie解包,适用于返回多值等场景。
在C++11中,
std::tuple
是一个非常实用的模板类,可以用来存储多个不同类型的数据。它类似于
,但能容纳两个以上的元素。使用
std::tuple
可以避免为简单组合数据专门定义结构体。
如何定义和初始化 tuple
你可以通过
或直接构造的方式创建 tuple:
访问 tuple 中的元素
使用
来获取指定位置的元素,注意索引是编译期常量:
修改 tuple 元素
可以通过
获取引用后进行修改:
C知道
CSDN推出的一款AI技术问答工具
下载
立即学习
“
C++免费学习笔记(深入)
”;
解包 tuple(结构化绑定,C++17 更方便)
C++11 没有结构化绑定,但可以用
将 tuple 解包到变量中:
基本上就这些。C++11 的 tuple 虽然操作稍显繁琐,但在需要临时组合不同类型数据时非常有用,比如函数返回多个值、作为容器的键等场景。关键是记住用
创建,
访问,
解包。不复杂但容易忽略细节。
std::pairstd::make_tuple
#include
#include
int main() {
// 方法1:使用 make_tuple(推荐)
auto person = std::make_tuple("Alice", 25, 68.5);
// 方法2:显式指定类型并构造
std::tuple person2("Bob", 30, 75.2);
return 0;
}
std::get(tuple)
std::string name = std::get<0>(person); // 获取第一个元素
int age = std::get<1>(person); // 获取第二个元素
double weight = std::get<2>(person); // 获取第三个元素
std::cout << name << ", " << age << ", " << weight << "\n";
std::get
std::get<1>(person) = 26; // 修改年龄
std::tie
std::string name;
int age;
double weight;
// 使用 tie 解包
std::tie(name, age, weight) = person;
std::cout << name << ", " << age << ", " << weight << "\n";
// 若不想接收某个值,可用 std::ignore
std::tie(name, std::ignore, weight) = person;
make_tuplestd::getstd::tie