什么是行,什么是列?

时间:2016-10-14 21:17:34

标签: c++ coding-style naming-conventions

将矩阵构建视为向量的向量,例如以下

std::vector<std::vector<int>> M;

在索引这样的矩阵中的值时,对于大多数程序员来说,当M[row][column]M[column][row]这样做时,它是否更直观?

2 个答案:

答案 0 :(得分:1)

重要的是如何访问阵列。顺序存储器访问通常比非顺序存储器访问更快。因此,如果您在数组上运行某些算法,并且在其内部循环中,“行”是常量但是“列”正在迭代,那么您希望列元素在内存中是连续的。在您的向量向量的情况下,这意味着您希望内部向量为“列”,因此您希望将其作为M[row][column]访问。

答案 1 :(得分:1)

你可以随意解释这个问题:问题是你看到外部矢量M是一个行向量或一列向量。 M[i][j]将表示ji - st向量中的M - st项。

当然,C ++程序员倾向于使用M[row][column]。这是因为它对应于定义2D数组时数据存储在内存中的方式。例如:

int M[2][3] = { { 11,12,13}, {21,22,23} };

将存储在内存中,并连续存储一行元素(如列),存储行后,存储下一行:

11 12 13 21 22 23 

或者如果您要修改显示的宽度:

11 12 13
21 22 23