将矩阵构建视为向量的向量,例如以下
std::vector<std::vector<int>> M;
在索引这样的矩阵中的值时,对于大多数程序员来说,当M[row][column]
或M[column][row]
这样做时,它是否更直观?
答案 0 :(得分:1)
重要的是如何访问阵列。顺序存储器访问通常比非顺序存储器访问更快。因此,如果您在数组上运行某些算法,并且在其内部循环中,“行”是常量但是“列”正在迭代,那么您希望列元素在内存中是连续的。在您的向量向量的情况下,这意味着您希望内部向量为“列”,因此您希望将其作为M[row][column]
访问。
答案 1 :(得分:1)
你可以随意解释这个问题:问题是你看到外部矢量M是一个行向量或一列向量。 M[i][j]
将表示j
中i
- 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