繁体   English   中英

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

[英]How to represent 2D matrix in c++

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

您可以创建一个一维数组和一个行指针数组。 然后,您将获得两全其美的好处:具有良好内存位置和可预测访问的便捷界面。

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];

我建议你使用std::vector因为它本质上是动态的并且易于使用。

int row;
int col;
std::vector< std::vector<int> > two_d_matrix( row, std::vector<int>(col));

请注意,如果您使用std::vector请不要忘记添加#include<vector>

二维数组更方便,例如

const int rows = 100;
const int cols = 100;
int arr[rows][cols];

您将数组元素称为arr[i][j] ,其中0 <= i < rows0 <= j < cols

const int row = 256; const int col = 256; vector<vector<int> > matrix2D(row, (col,0)); /*由此我们可以说我们有一个256*256的二维矩阵,并且所有元素都是0。*/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM