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

如何直接写入std::vector<std::array>容器,解决MSVC编译不通过问题

问题根源

你的代码语法不符合C标准规范,GCC对错误写法做了非标准扩展兼容,MSVC严格执行C标准所以编译失败。
你定义的容器层级为:std::shared_ptr指向std::vector,vector的每个元素是长度为9的std::array<std::string>,原写法中operator[0]的调用格式、索引顺序均不符合标准要求。

修复方案

写法1:简洁解引用写法(推荐)

// 注意容器下标从0开始,确认循环边界小于vector初始化的size,避免越界
for (int j = 0; j < size; j++)
{
    // (*tablelisttt)取到vector对象,[j]取vector第j个array元素,[0]取array第0位字符串
    (*tablelisttt)[j][0] = "Hello";
}

写法2:显式调用operator[]的标准写法

如果有特殊场景需要显式调用运算符函数,使用标准格式:

for (int j = 0; j < size; j++)
{
    tablelisttt->operator[](j)[0] = "Hello";
}

注意事项

  • 不存在正式发布的C19标准,当前最新正式标准为C23,你提到的C++19应为非正式草案版本,不影响基础语法的兼容性要求
  • 原循环从j=1开始、终止条件为j<=max的写法容易触发越界访问,vector初始化的size必须大于循环用到的最大下标,否则会触发未定义行为

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 00:24:05