好吧,我有2d阵列,但由于某种原因,我现在需要它是动态的,所以就像这样
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];
我需要数组中的所有元素都是浮点数
避免这种方法,它会废弃你的缓存访问。使用1d数组,并创建一个可以通过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;
更好的方法是将其包装在同样存储维度的结构/类中。