如何在类构造函数中使用参数初始化std :: array的大小?

时间:2015-09-15 09:13:43

标签: c++ c++11 std

例如:

#Include <array>

class UnionFind final {
 public:
  explicit UnionFind(int numbers) {
    // ???
  }

 private:
  std::array<int, ???> array_;
};

我想在构造函数array_中将std::array<int, numbers>初始化为UnionFind(int numbers),但我不知道该怎么做。

1 个答案:

答案 0 :(得分:7)

必须在编译时指定

std::array的大小,例如:

template <std::size_t numbers>
class UnionFind final {
public:
  UnionFind() {}

private:
  std::array<int, numbers> array_;
};

然后(假设大小固定为3)

UnionFind<3> u;

如果要在运行时指定大小,可能需要使用std::vector

class UnionFind final {
public:
  explicit UnionFind(int numbers) : array_(numbers) {}

private:
  std::vector<int> array_;
};