首页 > 解决方案 > 无法在 Visual Studio 代码中使用初始化列表初始化向量

问题描述

#include <vector>
#include <iostream>
using namespace std;

int main()
{
    vector<int> v = {1,2,3,4};
    for (int x : v)
    {
        cout << x << ' ';
    }
return 0;
}

当我在 vscode 中运行上述代码时,我收到以下错误:

非聚合类型 'vector' 不能用初始化列表 gcc [7, 17] 初始化

注意- 错误包括 gcc,即使那不是我使用的编译器。

该代码在终端和 Xcode 中编译得很好,所以我知道它与 vscode 有关。我该如何解决这个问题?

注意- 我正在使用具有以下配置的 IC/C++ IntelliSense:编译器路径 (/usr/bin/clang++) IntelliSense 模式 (macros-clang-arm64) 包含路径 (${workspaceFolder}/**) C 标准 (c17) C++标准 (C++17)。

标签: c++visual-studio-codevectorinitialization

解决方案


我复制了你的代码并命名它test.cpp。我遇到了同样的问题,我通过添加一些配置解决了这个问题。在 中查找tasks.json并添加一些内容args

"args": [
    "-g",
    "-Wall",
    "-std=c++11",
    "test.cpp"
]

它适用于我的 MAC!我command+shift+B以前编译过,编译后生成的a.out。然后你可以运行它F5。我也在launch.json这里发布,/Users/work/Foo我的工作区文件夹在哪里。注意线program,我已经改变了这条线。祝你好运!

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "C/C++ Runner: Debug Session",
      "type": "cppdbg",
      "request": "launch",
      "args": [],
      "stopAtEntry": false,
      "cwd": "/Users/work/Foo",
      "environment": [],
      "program": "/Users/work/Foo/a.out",
      "MIMode": "lldb",
      "externalConsole": true
    }
  ]
}

推荐阅读