【发布时间】:2016-01-24 11:03:49
【问题描述】:
根据typeid(array).name() 在 G++ 4.8.4 中是PAN_i。我知道P 表示指针,i 表示 int,但 A 是什么类型,为什么只有第二维 - N - 而不是第一个 - M。
我应该在auto array = new int[M][N] 中输入什么而不是 auto?
有没有办法将array 分配给int**?
另一个问题是 M 和 N 必须是编译时常量。如果不是,我想我唯一的选择是the dynamic C++03 2D arrays。
【问题讨论】:
-
这将有助于了解编译器,因为
name返回一个由实现定义的字符串,请参见此处:en.cppreference.com/w/cpp/types/type_info/name -
编译器为 GCC 4.8.2。在 MinGW 4.9.2 中也是如此。
-
我不认为你可以从
new int[M][N]开始(虽然,也许在 C++11 中你可以)。但是您可以声明typedef int[M][N] MyArray_t,然后使用new MyArray_t(假设M和N是常量)。无论如何,在 C++ 中你也可以使用vector<vector<int>>。否则,如果你仍然坚持使用原生(C 风格)数组,那么这种情况下的类型应该是int**。 -
@barakmanos 我认为没关系。并且只有
N必须是编译时间常数。 -
我将此问题标记为可能与 stackoverflow.com/questions/81870/… 重复。此外,您在一个问题中提出了三个不同的问题,其标题并未涵盖所有问题。
标签: c++ arrays c++11 dynamic multidimensional-array