将二维矩阵表示为数组数组,或者将一个函数将坐标转换为相应的数组索引的一维数组是否更快?
答案 0 :(得分:3)
您可以制作一维数组和一系列行指针。然后,您将获得两全其美:具有良好内存位置和可预测访问的便捷界面。
int * matrix1d = new int [rows * cols];
int ** matrix2d = new int * [rows];
for (size_t i = 0; i != rows; ++i)
matrix2d[i] = &matrix1d[i * cols];
int v1 = matrix1d[r * cols + c];
int v2 = matrix2d[r][c];
答案 1 :(得分:1)
我建议你使用std::vector
因为它本质上是动态的并且易于使用。
int row;
int col;
std::vector< std::vector<int> > twoDMatrix( row, std::vector<int>(col));
请注意,如果您使用的是std::vector
,请不要忘记添加#include<vector>
。
答案 2 :(得分:0)
2D数组更方便,例如
const int rows = 100;
const int cols = 100;
int arr[rows][cols];
您将数组元素称为arr[i][j]
0 <= i < rows
和0 <= j < cols
答案 3 :(得分:0)
const int row = 256;
const int col = 256;
vector<vector<int> > matrix2D(row, (col,0));
/ *通过这个我们可以说我们有一个256 * 256的二维矩阵,所有元素都是0. * /