我一直在尝试为二维数组分配动态内存。经过大量搜索后,我发现了一个看起来比其他代码更容易的代码,但我仍然无法理解它的每一个细节。有人能解释一下下面的代码是如何动态地为数组分配内存的吗?真的很期待帮助,很抱歉,但我是 C++ 的新手,想学习它。
void main()
{
int m,n;
cin>>m;
cin>>n;
//Allocate
int *a = new int[m*n];
//Use a[m][n]
for( int i = 0 ; i < m ; i++)
for ( int j = 0 ; j < n ; j++)
a[i*n + j] = 1;
}
最佳答案
该代码仅使用单个内存块来表示所有元素,因此要访问示例 ( i, j )
需要计算索引为 i * num_rows + j
(或 num_colums 取决于你如何看待它)。
但如评论所述,不要使用 new int....
,使用类似的东西
std::vector< int > a( m * n );
关于c++ - 需要有关 C++ 中二维数组动态内存分配的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17943776/