【问题标题】:What is wrong to initialize an int vector like this: vector<int> v1 = {1, 2, 3, 4}? [duplicate]像这样初始化 int 向量有什么问题:vector<int> v1 = {1, 2, 3, 4}? [复制]
【发布时间】:2021-02-08 04:36:38
【问题描述】:

当我像这样在 C++ 中初始化一个向量时:

#include <string>
#include <vector>
using std::vector;
using std::string;
int main() {

  vector<int> v1 = {1, 2, 3, 4};
  return 0;
}

我收到了这个错误:

prog1.cpp:8:15: error: non-aggregate type 'vector<int>' cannot be initialized with an initializer list
  vector<int> v1 = {1, 2, 3, 4};
              ^    ~~~~~~~~~~~~
1 error generated.

知道为什么会这样吗?

【问题讨论】:

  • 设置编译器选项,将程序编译为 C++11 程序。
  • 你是用-std=c++11编译的吗?

标签: c++ vector


【解决方案1】:

初始化器列表是从 C++ 11 开始引入的,因此如果您使用旧标准进行默认编译,则需要在编译 (-std=version) 时指定该(或更高)版本。

【讨论】:

    猜你喜欢
    • 2014-05-27
    • 2021-03-19
    • 2021-11-07
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多