(这需要一些背景信息,请阅读本文,然后,如果您能向我解释为什么会发生这种情况,我将不胜感激您的帮助)
好吧,在我的大学里,他们教了我们两种用 C++ 制作矩阵的方法。
第一种方式最经典
int matrix[rows][columns];
然后,是这样的:
int** matrix = new int*[rows];
for(int i = 0; i < rows; i++)
matrix[i] = new int[columns];
理论上,这是这样工作的。
首先,我们创建一个向量,然后,使用 for,我们在向量中的每个空间中迭代以创建行,在图像中,首先我们创建绿色列,对于列中的每个数字,我们创建矩阵中的其余元素。
我们学习了如何使用指针来访问矩阵中的位置等。一切都工作正常,但是,在一次练习中,我需要对矩阵进行排序,而且,我的第一个想法是“如果矩阵就像一个大向量ram,我应该像向量一样对它进行排序,但在矩阵的第一个元素中使用一个指针”,(我在c中像这样对矩阵进行排序)。但是当我尝试使用气泡算法进行排序时,矩阵中引入了一些 RAM trash,所以..几个小时后,我尝试查看 RAM 和矩阵中的元素是如何分配的,并使用调试器克利翁我看到了这个...
在这种情况下,矩阵的每一行都位于连续的 RAM 空间中,但是,当到达新行时,RAM 无缘无故地跳转到 13 个位置。我不是这个主题的专家,所以,我以“典型”的方式创建了一个矩阵,看看这个矩阵是否具有连续的 RAM 位置。
问题
而且,C++ 如何知道如何在矩阵中进行迭代?因为如果我们用 [i][j] 迭代矩阵就可以完美地工作,如果矩阵中的元素不连续,C++ 如何知道我们是否完成了要迭代一行,需要在 RAM 中跳转 13 个空格到下一行吗?
感谢每一个回答,非常感谢