Один шаг в алгоритме поиска пути A * требует поиска в списке открытых узлов узла, с которым вы в данный момент взаимодействуете, и добавления этого узла в список, если его еще нет, или обновления его значения и родителя, если он присутствует. но с большим весом, чем текущая версия узла.
Эти варианты поведения не поддерживаются в структуре priority_queue STL. Как мне реализовать этот шаг?
Обновления, так как этот вопрос получает много просмотров:
std::priority_queue может показаться хорошим выбором для этого, но это не так.
Внедрение A* самостоятельно значительно повышает уверенность в себе, но после того, как вы это сделаете, вы должны попытаться переключиться на использование того, что предлагает boost. Я нервничал по поводу его установки, когда задавал этот вопрос, но установка очень проста и не вызовет никаких сложностей; и A * — не единственная полезная функциональность, которую предоставляет boost. (В частности, если вы не используете их функции обработки строк, вы в конечном итоге напишете свою собственную копию; я говорю из личного опыта...)