You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C++17结构化绑定为数组元素赋值?

问题核心

结构化绑定的语法规则明确要求,[]内只能填写新声明的标识符(变量名),不支持填入已经存在的左值表达式(比如已定义数组的元素、已声明的普通变量)。你写的auto [arr[0], arr[1]] = makePair();不符合语法要求,本身就是不被C++标准支持的写法。

解决方案

方案1:使用std::tie实现(C++11及以上都支持,最优解)

std::tie可以把多个左值打包成一个tuple,直接接受pair/tuple类型的赋值,不需要额外声明临时变量,无额外运行时开销。
代码示例:

#include <utility> // std::tie, std::pair

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

int main() {
    int arr[20];
    // 直接赋值给数组元素
    std::tie(arr[0], arr[1]) = makePair();
}

方案2:先做结构化绑定到临时变量,再手动赋值

如果确实需要用到结构化绑定的语法,可以先把返回值绑定到新声明的局部变量,再给数组赋值:

#include <utility>

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

int main() {
    int arr[20];
    auto [a, b] = makePair();
    arr[0] = a;
    arr[1] = b;
}

这种写法适合后续还要用到a、b两个值做其他操作的场景,代码可读性更高。

内容的提问来源于stack exchange,提问作者Yossi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 17:06:03