c ++声明一个不知道大小的数组数组

bla*_*tus 6 c++

我必须声明一个数组或多维数组的数组,而不知道大小.我希望在这种情况下使用简单的数组做类似的事情:

int *array;
cin >> size;
array = new int[size];
Run Code Online (Sandbox Code Playgroud)

也许我可以做一个循环来初始化像这样的指针指针:

int **array;
cin >> rows >> col;
array = new *int[rows]
for (int i = 0; i < rows; ++i)
    array[i] = new int[col];
Run Code Online (Sandbox Code Playgroud)

但如果可以提供更好的解决方案,我更愿意不这样做.

Geo*_*tee 5

为什么不使用std :: vector?

std::vector<std::vector<int> > array;
Run Code Online (Sandbox Code Playgroud)

如果您不想使用指针数组,则可以使用在获取大小后动态分配的一个大型数组,并将其作为行数组进行访问.

int rows = 10;
int columns = 20;

int* array = new int[rows * columns];

for (int count = 0; count < rows; count++)
{
   int* row = &array[count * columns];

   for (int inner_count = 0; inner_count < columns; inner_count++)
   {
      int* element = &row[inner_count];

      //do something
   }
}

delete [] array;
Run Code Online (Sandbox Code Playgroud)

  • 如果有问题的代码对性能敏感,请不要使用`vector`的`vector`.与单个大块内存相比,您将面临大量缓存未命中. (2认同)