gpt4 book ai didi

c++ - 结构化绑定(bind)是否适用于 std::vector?

转载 作者:IT老高 更新时间:2023-10-28 13:02:49 25 4
gpt4 key购买 nike

是否可以对 vector 使用结构化绑定(bind)?

例如

std::vector<int> vec{1, 2, 3};
auto [a, b, c] = vec;

不幸的是,上面的代码不起作用(在 GCC 下),但也许有一种不同的方式(使用结构化绑定(bind))允许将 vector 的前三个值分配给三个变量。

最佳答案

结构化绑定(bind)仅在编译时已知结构的情况下才有效。 vector 不是这种情况。

虽然您确实知道各个元素的结构,但您不知道元素的数量,而这正是您试图在问题中分解的内容。同样,您只能在编译时知道大小的数组类型上使用结构化绑定(bind)。考虑:

void f(std::array<int, 3> arr1,
int (&arr2)[3],
int (&arr3)[])
{
auto [a1,b1,c1] = arr1;
auto [a2,b2,c2] = arr2;
auto [a3,b3,c3] = arr3;
}

前两个可以工作,但最后一行将无法编译,因为在编译时不知道 arr3 的大小。 Try it on godbolt .

关于c++ - 结构化绑定(bind)是否适用于 std::vector?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51077383/

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