c++ - 需要有关 C++ 中二维数组动态内存分配的帮助

标签 c++ arrays windows visual-c++ multidimensional-array

我一直在尝试为二维数组分配动态内存。经过大量搜索后,我发现了一个看起来比其他代码更容易的代码,但我仍然无法理解它的每一个细节。有人能解释一下下面的代码是如何动态地为数组分配内存的吗?真的很期待帮助,很抱歉,但我是 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/

相关文章:

无法将参数存储为数组并在 C 中打印它们

Python 程序共存于 Windows

python - 读取 Windows 文件而不阻止其他进程写入该文件

c++ - Boost shared_ptr 似乎不支持运算符 ==

C++ 使用命名空间声明

c++ - 可以单独声明函数数组的元素吗?

javascript - 为什么使用 push 或任何数组方法修改原始数组但将其分配给其他东西却没有?

javascript - 如何使用 WMI 枚举所有 ActiveX 元素?

使用虚拟参数的 C++ 类成员函数

函数声明中的 C++ const 变量