<分区>
好吧,我有二维数组,但出于某种原因,我现在需要它是动态的 原来是这样
const int n=100; const int m=100;
float matrix1 [n][m];
我试着把它变成这样
int n,m ;
float** matrix1 = new int*[n];
for(int i = 0; i < n; ++i)
matrix1[i] = new int[m];
我需要数组中的所有元素都是 float
<分区>
好吧,我有二维数组,但出于某种原因,我现在需要它是动态的 原来是这样
const int n=100; const int m=100;
float matrix1 [n][m];
我试着把它变成这样
int n,m ;
float** matrix1 = new int*[n];
for(int i = 0; i < n; ++i)
matrix1[i] = new int[m];
我需要数组中的所有元素都是 float
最佳答案
避免这种方法,它会破坏您的缓存访问。使用一维数组,并创建一个可以通过 2 个索引访问元素的函数。
否则,std::vector 使用起来比原始指针更安全,并且在发布版本中几乎没有性能损失。
喜欢:
unsigned int n = 100;
unsigned int m = 1000;
std::vector<float> data(n * m, 0.0f);
auto accessor = [&](unsigned int x, unsigned int y) -> float& {
// optional bounds checks here
return data[x + y * n];
};
// Do something with your data.
accessor(1, 2) = 1.0f;
更好的方法是将其包装在也存储维度的结构/类中。
关于c++ - 这是存储 float 的二维动态数组的正确初始化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55912389/