A* 寻路算法中的一个步骤需要在打开节点列表中搜索您当前正在与之交互的节点,如果该节点尚不存在,则将该节点添加到列表中,或者更新其值和父节点(如果存在)但权重高于当前版本的节点。
STL priority_queue 结构不支持这些行为。我应该如何实施该步骤?
更新,因为这个问题得到了很多意见:
std::priority_queue 看起来可能是一个不错的选择,但事实并非如此。
自己实现 A* 可以极大地增强信心,但是在完成之后,您应该尝试切换到使用 boost 提供的那个。当我问这个问题时,我对安装它感到紧张,但安装非常容易,不会产生任何并发症;A* 并不是 boost 提供的唯一有用的功能。(特别是,如果你不使用他们的字符串处理功能,你最终会编写自己的副本;我是根据个人经验说的......)