如何在 class 构造函数中使用参数初始化 std::array 的大小?
How to use parameter to initialize the size of std::array in a class constructor?
例如:
#Include <array>
class UnionFind final {
public:
explicit UnionFind(int numbers) {
// ???
}
private:
std::array<int, ???> array_;
};
我想在构造函数UnionFind(int numbers)
中将array_
初始化为std::array<int, numbers>
,但我不知道该怎么做。
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_;
};
例如:
#Include <array>
class UnionFind final {
public:
explicit UnionFind(int numbers) {
// ???
}
private:
std::array<int, ???> array_;
};
我想在构造函数UnionFind(int numbers)
中将array_
初始化为std::array<int, numbers>
,但我不知道该怎么做。
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_;
};