Как проверить на совпадение priority_queue
Всем добра! Пытаюсь перенести функцию поиска пути по точкам из c# который хорошо работает в юнити. В с++ не силен, проблема которую ни как не могу решить, как проверить на совпадение priority_queue? В с# используется SortedList, как я понял аналог этому в с++ является priority_queue, но он не имеет такой проверки. Перерыл весь гугл, так и не нашел способа или чем заменить.
TArray<FVector> UWaypointsPathfinding::GetPath(UWaypoint* startNode, UWaypoint* goalNode)
{
UWaypoint* beginNode = startNode;
priority_queue<UWaypoint*, vector<UWaypoint*>, Compare> openList;
vector<UWaypoint*> closedList;
openList.push(startNode);
startNode->previous = nullptr;
startNode->distance = 0;
while (!openList.empty())
{
startNode = openList.top();
openList.pop();
float dist = startNode->distance;
closedList.push_back(startNode);
if(startNode == goalNode) break;
int l = startNode->nearest.Num();
for (int i = 0; i < l; i++)
{
UWaypoint* node = startNode->nearest[i]->FindComponentByClass<UWaypoint>();
__нужно добавить такой же поиск на совпадение для openList (priority_queue)__
if(find(closedList.begin(),closedList.end(),node) != closedList.end()) <--- сюда
continue;
node->previous = startNode;
node->distance = dist + FVector::Dist(node->GetOwner()->GetActorLocation(), startNode->GetOwner()->GetActorLocation());
node->distance += FVector::Dist(node->GetOwner()->GetActorLocation(), goalNode->GetOwner()->GetActorLocation());
openList.push(node);
}
}
return TArray<FVector>();
}