如何有效地存储路径点
How to store waypoints efficiently
我有一个游戏有一个非常大的地图,我需要存储大量的路点(数百万,如果不是数十亿的话),然后使用它们来使用a *算法寻路。
我需要什么:
- 高效存储方式
- A*算法直接访问它们的快速方式。
起初我想使用一个简单的向量,但这将很快使用所有可用的内存。然后我想我应该使用mysql,这也许是一个好主意,因为我可以查询数据库的路点区域。
最大的问题是,对于A*,我需要尽可能快地访问路点,所以也许我需要每个路点唯一的ID。
实现这一目标的最佳方法是什么?
我认为你应该考虑通过自己管理内存来稍微降低级别——为你的图的每个节点显式调用new
和delete
;并通过内存地址引用节点。如果您担心分配大量的小块内存,您可以考虑使用tcmalloc库。
节点应包含邻接表。如果图是静态的,我建议将邻接关系存储在每个节点中动态创建的数组中,该数组的大小与邻居的数量完全匹配。如果邻居的数量可以随时间变化,std::vector
可能是次优选择。
注:我假设图形是不规则的。对于规则图(例如Potatoswatter指出的网格),节点的位置可以隐式学习。
相关文章:
- 将字符串存储在c++中的稳定内存中
- 有效地将大数存储为 2 的幂用于路径问题
- 使用BFS存储和打印最短路径
- 在OSX中使用CGDisplayStream存储屏幕记录的特定文件路径
- QT;我如何在运行时存储通往变量的资源路径
- QT MAC应用程序存储数据路径
- 使用路径作为文件存储中的键
- 如何获取存储在 hpp 头文件中的相对或绝对文件路径,可以在任何系统中使用?
- 存储库的路径.需要最佳实践
- 如何将 .c 和 .h 文件存储在包含路径中,与当前项目的源代码分开
- 存储最短路径
- 关于在 c++ 中将文件路径存储在集合 STL 中
- 使用字符串在C++中指定文件路径(将文件存储在文件夹中)
- 如何将路径存储在这种结构中,以及如何将其转换为其他内容
- 本机代码中外部存储的应用路径
- 存储来自A*的路径,使用运算符:new和boost::multi_array
- 如何在Qt/C++应用程序中存储文件路径
- Visual Studio: c++项目包含路径在存储库上共享
- QPixmap不能使用存储在变量中的图像路径
- 如何有效地存储路径点