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