C++ tie 和 ignore

2022年 10月 9日 83点热度 0人点赞

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

rainbow

这个人很懒,什么都没留下

文章评论