如何在c ++中表示二维矩阵

时间:2014-10-28 12:08:28

标签: c++

将二维矩阵表示为数组数组,或者将一个函数将坐标转换为相应的数组索引的一维数组是否更快?

4 个答案:

答案 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 < rows0 <= j < cols

答案 3 :(得分:0)

const int row = 256; const int col = 256; vector<vector<int> > matrix2D(row, (col,0)); / *通过这个我们可以说我们有一个256 * 256的二维矩阵,所有元素都是0. * /