【发布时间】:2013-04-19 02:45:03
【问题描述】:
我正在用 C++ 创建游戏应用程序。我将地图表示为Tile 对象的二维std::vector。
我需要在玩家移动时更新该地图。从服务器应用程序中,我得到带有全局地图新部分的行或列,它应该放在本地客户端的地图中,例如:
在图 1 中,玩家移动之前有一张本地地图。顶行用对象 1 填充,中心用 2 填充,底部用 0 填充。现在当玩家向上移动时,我得到新的顶行填充对象 3,所有其他对象都应该向下,并且之前的底行应该消失。
我可以通过在for 循环中移动所需的对象来做到这一点,但我在想标准库中是否已经存在某种算法,或者许多有效的方法都喜欢实现这种修改。
编辑:
抱歉,我没有意识到对行和列执行此操作会有区别,但确实有。所以我也编辑了我的标题,因为我有时也需要为专栏做。
【问题讨论】:
-
所以你有一个
std::vector<std::vector<Tile>>?哪个维度代表您的列,哪个代表行?这很重要,因为如果第二维表示行,则很容易实现这个“向上”命令。你可以交换第 1 行和第 2 行,然后交换第 1 行和第 3 行,然后替换第 1 行。交换可以通过对向量的指针进行三次异或来有效地实现,每次交换产生 3 个处理器指令。
标签: c++ performance algorithm vector multidimensional-array