gpt4 book ai didi

c++ - tie 不应该叫 untie 吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:59 27 4
gpt4 key购买 nike

int rno; string name; int marks;
tuple <int, string, int> x=make_tuple(1, "anukul", 100);
tie(rno, name, marks)=x;

这段代码将元组 x 中的值分配给变量。在某种程度上,它解包了元组 x。

那么为什么这个函数叫做“tie”呢?它与什么有关?

cplusplus 声明它“将参数绑定(bind)到元组元素”。但是元组元素的变化不会反射(reflect)在变量中。

最佳答案

您应该阅读 std::tie 的文档

Creates a tuple of lvalue references to its arguments [...]

所以除了像你那样用它把一个元组“解包”成变量,你还可以按如下方式使用它

int rno = 10; string name; int marks;
tuple <int&, string&, int&> x = tie(rno, name, marks);
get<0>(x) = 42;
cout << rno; // 42

Example

我不认为上面的代码是“解包”任何东西,而是变量与左值引用的元组结合在一起。

作为utnapistim建议(和示例代码中的 the documentation 显示)另一个与“解包”无关的可能用途是成员比较

struct comparable { 
int a, b;
bool operator==(const comparable& x) {
return std::tie(a, b) == std::tie(x.a, x,b);
}
};

关于c++ - tie 不应该叫 untie 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32563100/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com