【问题标题】:How can I use structured bindings to set an array's values?如何使用结构化绑定来设置数组的值?
【发布时间】:2021-09-22 21:38:38
【问题描述】:

我是 C++17 的新手,当我尝试使用结构绑定为几个数组单元设置值时遇到了问题。但是常规语法在这里不起作用;它与数组的括号混淆了。

我该如何解决?有可能吗?

例子:

std::pair<int, int> makePair() {
    return { 10, 20 };
}

int main() {
    int arr[20];

    // error here
    auto [arr[0], arr[1]] = makePair();
}

【问题讨论】:

  • 尝试一些更简单的东西。如果你有int a,b;而不是数组,你能绑定到ab吗?你可以绑定到任何预先存在的变量吗?

标签: c++ c++17


【解决方案1】:

这对工作来说是错误的工具。结构化绑定总是引入名;他们不接受左值的任意表达式。

但是即使在 C++11 中你也可以做你想做的事。有std::tie,正是为了这个目的:

std::tie(arr[0], arr[1]) = makePair();

给它一堆左值作为参数,它会产生一个对它们的引用元组。 std::tuplestd::pair 交互(被视为二元组),并且成员分配会修改您命名的数组元素。

【讨论】:

    猜你喜欢
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    相关资源
    最近更新 更多