如何使用结构化绑定来设置数组的值?
How can I use structured bindings to set an array's values?
我是 C++17 的新手,当我尝试使用结构绑定为几个数组单元格设置值时,我 运行 遇到了问题。但是常规语法在这里不起作用;它会与数组的括号混淆。
我该如何解决?有可能吗?
示例:
std::pair<int, int> makePair() {
return { 10, 20 };
}
int main() {
int arr[20];
// error here
auto [arr[0], arr[1]] = makePair();
}
这是错误的工具。结构化绑定总是引入 new 名称;他们不接受左值的任意表达式。
但是即使在 C++11 中你也可以做你想做的事。 std::tie
,正是为了这个目的:
std::tie(arr[0], arr[1]) = makePair();
给它一堆参数的左值,它会产生一个对它们的引用的元组。 std::tuple
与 std::pair
交互(被视为二元组),成员赋值会修改您命名的数组元素。
我是 C++17 的新手,当我尝试使用结构绑定为几个数组单元格设置值时,我 运行 遇到了问题。但是常规语法在这里不起作用;它会与数组的括号混淆。
我该如何解决?有可能吗?
示例:
std::pair<int, int> makePair() {
return { 10, 20 };
}
int main() {
int arr[20];
// error here
auto [arr[0], arr[1]] = makePair();
}
这是错误的工具。结构化绑定总是引入 new 名称;他们不接受左值的任意表达式。
但是即使在 C++11 中你也可以做你想做的事。 std::tie
,正是为了这个目的:
std::tie(arr[0], arr[1]) = makePair();
给它一堆参数的左值,它会产生一个对它们的引用的元组。 std::tuple
与 std::pair
交互(被视为二元组),成员赋值会修改您命名的数组元素。