什么是行,什么是列,是否有约定?

Is there a convention for what is a row and what is a column?

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

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

在这样的矩阵中索引一个值时,像 M[row][column]M[column][row] 这样对大多数程序员来说更直观吗?

重要的是您如何访问数组。顺序内存访问通常比非顺序内存访问更快。因此,如果您在数组上使用 运行 某种算法,并且在其内部循环中,"row" 是常量,但 "column" 正在迭代,那么您希望列元素是连续的记忆。在您的矢量矢量的情况下,这意味着您希望内部矢量是 "column",因此您希望以 M[row][column].

的形式访问它

您可以随意解释:问题是您将外部向量 M 视为线向量还是列向量。 M[i][j] 则意味着 Mi-st 向量中的第 j-st 项。

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

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

将存储在内存中,一行的元素连续存储(如列),一旦存储了该行,存储下一行:

11 12 13 21 22 23 

或者如果您要固定显示宽度:

11 12 13
21 22 23