在构造函数init列表中初始化std :: vector数组

时间:2017-12-07 08:09:20

标签: c++ arrays vector constructor stl

通常在编写构造函数时,我尝试在成员初始化列表中初始化尽可能多的类成员,包括Invalidate()等容器。

std::vector

由于技术原因,我现在需要将其拆分为一个向量数组。

class MyClass
{
  protected:
  std::vector<int> myvector;

  public:
  MyClass() : myvector(500, -1) {}
}

事实证明,我无法以这种方式初始化向量数组。我究竟做错了什么?或者这是不可能的?

当然我仍然可以使用class MyClass { protected: std::vector<int> myvector[3]; public: MyClass() : myvector[0](500, -1), myvector[1](250, -1), myvector[2](250, -1) {} } 在ctor的主体中执行此操作,但我更喜欢在成员初始化列表中执行此操作。

1 个答案:

答案 0 :(得分:2)

您应该初始化整个数组,但不是每个元素。初始化数组的正确语法应为

MyClass() : myvector {std::vector<int>(500, -1), std::vector<int>(250, -1), std::vector<int>(250, -1)} {}