我有一个整数矩阵,应该像一个缓冲区:
x = {{0, 0, 0, 0, 0}, {1, 1, 1, 1, 1}, {2, 2, 2, 2, 2}};
现在,如果我添加一个新行{3, 3, 3, 3, 3},新矩阵应如下所示:
x = {{1, 1, 1, 1, 1}, {2, 2, 2, 2, 2}, {3, 3, 3, 3, 3}};
有没有一种巧妙的方法可以在不复制所有元素的情况下做到这一点?
模数运算怎么样?
如果您访问元素,matrix[x + SZ * y] 您可以将其更改为:
matrix[x + SZ * ((y + FIRST_ROW) % SZ)] .
通过这种方式来实现这种转换,你只需将新行{3,3,3 ..}放在行{0,0,0}所在的位置,然后将FIRST_ROW计数器递增以指向新的起始行.