我有一个维度3的向量,它将不断改变值,例如,如果我删除位置0的内容,我想移动剩余的单元格内容,剩余的单元格从0开始。
目前我是这样做的(java代码),但我觉得效率很低。

aux = posy[1];
posy[0] = aux;
aux = posy[2];
posy[1] = aux;
posy[2] = 0;

还有其他更有效的方法吗?

最佳答案

你不需要任何辅助变量。

posy[0] = posy[1];
posy[1] = posy[2];
posy[2] = 0;

相反的方向移动,你需要按相反的顺序移动。
没有其他的改进是可能的。
如果您有很多元素(比如说,五个元素),我建议您查看ArrayDeque类它允许在两端插入和删除,而无需移动元素它可能是通过一个指向两端的索引实现的,正如@Jacob G.在一条评论中建议的那样只需要三个元素,你就可以认为这是过分了。

关于java - 有效移动 vector 内容的算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51054277/

10-11 08:35