我在C++中创建游戏应用程序。我已将地图表示为Tile
对象的二维std::vector
。在2D中移动行/列的最有效方式std :: vector
我需要在玩家移动时更新该地图。从服务器应用程序,我得到的行或列全球地图的新的部分,它应该被放置在本地客户端的地图,例如:
在图1中还有前球员动作的本地地图。最上面一行填满了对象1,中间是2,底部是0.现在,当玩家向上移动时,我得到新的第一排填满了对象3,其他所有对象都应该向下,并且前面的最后一行应该消失。
我可以通过在for
循环中移动所需的对象来做到这一点,但我一直在考虑标准库中是否存在某种算法,或者是否有许多有效的方法来实现这种修改。
编辑:
对不起,我没有意识到会有这样操作行和列之间的差异,但确确实实存在。所以我也编辑了我的标题,因为我有时也需要为列进行编辑。
所以你有一个'std :: vector>'?哪一个维度表示你的列,哪一个行?这很重要,因为如果第二维代表行,则很容易实现这个“向上”命令。您可以交换第1行和第2行,然后交换第1行和第3行,然后替换第1行。通过对向量的指针进行异或操作,可以有效地实现交换,这会导致每次交换产生3个处理器指令。 –
Carsten
2013-04-25 09:21:59