如何使用new声明二维数组?
就像,对于"普通"数组,我会:
int* ary = new int[Size]
Run Code Online (Sandbox Code Playgroud)
但
int** ary = new int[sizeY][sizeX]
Run Code Online (Sandbox Code Playgroud)
a)不工作/编译和b)没有完成什么:
int ary[sizeY][sizeX]
Run Code Online (Sandbox Code Playgroud)
确实.
int newHeight = _height/2;
int newWidth = _width/2;
double*** imageData = new double**[newHeight];
for (int i = 0; i < newHeight; i++)
{
imageData[i] = new double*[newWidth];
for (int j = 0; j < newWidth; j++)
{
imageData[i][j] = new double[4];
}
}
Run Code Online (Sandbox Code Playgroud)
我动态分配了这个3D矩阵.什么是最快最安全的释放内存的方法?
这是我已经完成但是这需要几秒钟我的矩阵很大(1500,2000,4)
for (int i = 0; i != _height/2; i++)
{
for (int j = 0; j != _width/2; j++)
{
delete[] imageData[i][j];
}
delete[] imageData[i];
}
delete[] imageData;
Run Code Online (Sandbox Code Playgroud)
更新
如建议我选择了这个解决方案:
std::vector<std::vector<std::array<double,4>>>
Run Code Online (Sandbox Code Playgroud)
性能对我的情况很好