如何在运行时定义成员数组大小

Rad*_*cal 3 c++ arrays

假设我有一个具有数组成员的类.是否可以在构建时/运行时定义其大小,方式如下:

class myClass {
    private:
        int myArray[n]
    public:
        myClass();
        someOtherMethod();
};
Run Code Online (Sandbox Code Playgroud)

其中n是基于用户输入定义的变量.如果没有,最好的选择是什么?

Mat*_* M. 9

这取决于.

从语义上讲,有三种类型的数组:

  • 在编译时固定大小的数组
  • 大小在运行时固定的数组
  • 具有动态大小的数组

C++直接支持第一种和第三种情况,分别使用常规数组和std::vector类.

C还支持带有两个结构的第二种类型:

  • 可变长度数组(在堆栈上)
  • oldie struct hack或tail-padding

我会建议,在C++中,使用std::vector您的情况下的类.它提供的不仅仅是您需要的,而且使用起来更简单.

另一方面,即使在C++中,您仍然可以使用尾部填充.它确实需要仔细的工程.