使用2D向量的指针算法

时间:2011-12-22 16:55:53

标签: c++

我正在尝试理解2D向量中的指针算法。

我认为如果我的尺寸为M[3][3]*ptr=&M[0][0]的2D矢量 比ptr[4]等于M[1][2],但似乎是错误的。

你可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

2D数组排列在Row-major order中,因此第0行的第3列首先出现,然后是第1行的3列,等等。您的概念是正确的,但是您的计数是关闭的:它是M [1 ] [1]

http://www.ideone.com/ivoWq

请注意,由于pointer aliasing,您可能会遇到问题,具体取决于您的代码以及编译器尝试优化的程度。

答案 1 :(得分:1)

M [3] [3]在记忆中列为[0,0] [0,1] [0,2] [1,0] [1,1] [1,2] [2,0] ] [2,1] [2,2]

所以ptr + 4将是数组[1,1]的第四个元素,但由于你将它定义为2d数组,所以你不能使用1d索引作为速记。