tuple 即元组, 可以理解为 pair 的扩展, 可以用来将不同类型的元素存放在一起, 常用于函数的多返回值.
定义与初始化
tuple 可以使用初始化列表进行赋值.
tuple<int, double, string> t3 = {1, 2.0, "3"};
访问
可以使用 get<常量表达式>(tuple_name) 来访问或修改 tuple 的元素 (返回引用)
get<0>(t3) = 4;
cout << get<1>(t3) << endl;
会输出 2
批量赋值
std::tie
会将变量的引用整合成一个 tuple, 从而实现批量赋值.
int i; double d; string s;
tie(i, d, s) = t3;
cout << i << " " << d << " " << s << endl;
会输出 4 2 3
还可以使用 std::ignore
忽略某些 tuple 中的某些返回值, 如
tie(i, ignore, s) = t3;
其它
需要注意的是, tie 无法直接从初始化列表获得值, 比如下面第 5 行会编译错误.
int i; double d; string s;
tuple<int, double, string> t3 = {1, 2.0, "3"};
tie(i, d, s) = t3;
t3 = {1, 2.0, "3"};
tie(i, d, s) = {1, 2.0, "3"};
版权声明: 本文为 CSDN 博主「Little_Fall」的原创文章, 遵循 CC 4.0 BY-SA 版权协议, 转载请附上原文出处链接及本声明.
原文链接:https://blog.csdn.net/m0_37809890/article/details/89367406
std::ignore 介绍
任何值均可赋给而无效果的未指定类型的对象. 目的是令 std::tie 在解包 std::tuple 时作为不使用的参数的占位符使用.
示例
解包 set.insert()
所返回的 pair
, 但只保存布尔值.
#include <iostream>
#include <string>
#include <set>
#include <tuple>
int main()
{
std::set<std::string> set_of_str;
bool inserted = false;
std::tie(std::ignore, inserted) = set_of_str.insert("Test");
if (inserted) {
std::cout << "Value was inserted successfully\n";
}
}
结果如下:
Value was inserted successfully
文章评论