如何声明没有特定大小的数组?

She*_*lef 5 c++ arrays constructor

如何将没有特定大小的数组声明为类成员?我想在类构造函数中立即设置此数组的大小.是否可以在不使用堆或不调整数组大小的情况下执行此类操作?

Alo*_*ave 8

C++标准不允许使用可变长度数组.你有的选择是:

  • 使用std::vector
  • 使用指向动态内存的指针

请注意,大多数编译器都支持可变长度数组作为扩展,因此,如果您不担心可移植性并且编译器支持它,则可以使用它.当然,它有自己的问题,但考虑到你所引用的限制,它是一个选择.


jua*_*nza 6

C++要求在编译时知道自动存储阵列的大小,否则必须动态分配数组.所以你需要在某种程度上进行动态分配,但你不必担心直接这样做:只需使用std::vector:

#include <vector>

class Foo
{
 public:
  Foo() : v_(5) {}
 private:
  std::vector<int> v_;
};
Run Code Online (Sandbox Code Playgroud)

这里,v_是一个矢量保持ints,并被构造成具有大小5.向量负责动态分配.

在C++ 14中,您可以选择使用std::dynarray,这非常类似std::vector,除了它的大小在构造中是固定的.这与纯动态分配的阵列功能更加匹配.