假设我有一个具有数组成员的类。是否可以通过以下方式在构建时/运行时定义其大小:
class myClass {
private:
int myArray[n]
public:
myClass();
someOtherMethod();
};
其中n是基于用户输入定义的变量。如果没有,最好的替代方案是什么?
答案 0 :(得分:8)
取决于。
从语义上讲,有三种类型的数组:
C ++直接支持第一种和第三种情况,分别使用常规数组和std::vector
类。
C还支持具有两种结构的第二种类型:
我建议在C ++中使用std::vector
类。它提供的不仅仅是你需要的,但更容易使用。
另一方面,即使在C ++中,您仍然可以使用尾部填充。它确实需要仔细的工程。
答案 1 :(得分:3)
使用矢量。
class myClass {
private:
std::vector<int> myArray;
public:
myClass();
someOtherMethod();
};
myClass::myClass (int size)
: myArray (size)
{
...
}
然后,您可以像填充数组一样填充矢量。或者,正如Nawaz指出的那样,使用为新元素预留空间的reserve()
和/或push_back()
,它一次一个地添加元素到背面。
答案 2 :(得分:1)
课程模板std::vector
专为此目的而设计。
class myClass {
private:
std::vector<int> myArray;
public:
myClass(int size);
someOtherMethod();
};
myClass::myClass(int size) : myArray(size)
{
}