数组元素的结构化绑定
structured bindings to array element
当左侧是对数组成员的引用时,结构化绑定的正确语法是什么?
例如,以下程序无法编译:
#include <array>
std::array<int, 2> f()
{
return { 1, 2 };
}
int main()
{
std::array<int, 4> a;
a.fill(3);
auto [ a[1], a[2] ] = f();
}
给出错误
main.cpp: In function 'int main()':
main.cpp:12:13: error: expected ']' before '[' token
12 | auto [ a[1], a[2] ] = f();
结构化绑定写成也是一样
auto [ std::get<1>(a), std::get<2>(a) ] = f();
结构绑定声明新变量,
如果要重用现有变量,std::tie
更合适。
auto [ a1, a2 ] = f();
std::tie(a[1], a[2]) = std::tie(a1, a2);
当左侧是对数组成员的引用时,结构化绑定的正确语法是什么?
例如,以下程序无法编译:
#include <array>
std::array<int, 2> f()
{
return { 1, 2 };
}
int main()
{
std::array<int, 4> a;
a.fill(3);
auto [ a[1], a[2] ] = f();
}
给出错误
main.cpp: In function 'int main()':
main.cpp:12:13: error: expected ']' before '[' token
12 | auto [ a[1], a[2] ] = f();
结构化绑定写成也是一样
auto [ std::get<1>(a), std::get<2>(a) ] = f();
结构绑定声明新变量,
如果要重用现有变量,std::tie
更合适。
auto [ a1, a2 ] = f();
std::tie(a[1], a[2]) = std::tie(a1, a2);