我在为我的数据选择最相关的结构时遇到了麻烦,以下是解释:
我实际上正在为学校开发一个游戏项目,一个类似 C++ 的 Bomberman 游戏。我正在设计包含炸弹、盒子、玩家和墙壁的地图对象。地图是二维的,我已经有 2 个类型的容器:
std::unordered_map<int, std::unordered_map<int, AEntity*> > *UMap;
一个包含墙壁,另一个包含可破坏的对象(炸弹、盒子)。我已经在这里讨论过这个选择 ->选择 unsorted_map。这主要是为了快速访问时间,因为每个地图的盒子只能有一个元素。
现在,正如标题所暗示的那样,我在为我的玩家选择数据容器时遇到了麻烦,因为一个地图的盒子上可以有多个玩家,unordered_maps 不能使用。
第一次我打算使用std::list<AEntity*>
sorted with std::sorted
,AEntity
包含实体信息(坐标),但是在编码我的
playerOn(const int x, const int y);
功能我发现这是一个糟糕的选择。我无法使用二分法足够快地检索给定盒子上的哪些玩家,如果这个盒子没有玩家,那就浪费时间。
我应该如何存储我的 (AEntity)Players 以便能够快速检索它们
(最让人头疼的是,在大地图上,一次可以有超过 500 名玩家,这就是我在寻找优化的原因)
我的脑汁快用完了。感谢您未来的回答。
编辑我的问题
这主要是因为我想知道是否有另一种解决方案可以通过我的整个 std::list 来查找 box(x,y) 上是否有人。看起来很慢而且没有优化,但我想不出另一种方法来做到这一点。(如果需要,我可以更改容器类型)