在C/C++中使用多维数组是不好的做法吗?

Mau*_*rus 19 c c++ multidimensional-array

一些程序员似乎非常讨厌他们,而其他程序员似乎认为他们很好.我知道任何可以对多维数组做的事情也可以用于常规数组,所以它们在功能上是等价的.使用多维数组是不好的做法,还是无关紧要?

Jam*_*lis 12

您是否需要在提前知道尺寸的情况下存储多维数据?如果是这样,请使用多维数组.

如果你不提前知道尺寸(即,你将不得不动态分配数组),那么你要么要么

  • 分配一维数组并使用索引算法模拟n维数组,或
  • 分配一个指向数组元素的指针数组,以获得实际的多维数组语义

这取决于具体的用例,但根据经验,我几乎总是更喜欢前者,因为它减少了内存管理的麻烦和更少的堆分配.两种方法的复杂性随着维数的增加而增加,但是,在我看来,由于额外的间接水平,后一种方法的增长速度要快得多.