operator<に追加するのはおそらく不十分なようnodeです。自問してみてください:ノードは論理的に比較可能ですか?(priorty_queueのコンテキスト外で)ノードを比較することで、それらの優先度を比較する必要があることは明らかですか?多分それは彼らの位置、または彼らが含むかもしれない他のものを比較するべきです。を指定する場合operator<は、他の5つの比較演算子を使用することも意味があります。node < node実際に何を比較するかが明確でない場合はoperator<、ノードにforを提供しないでください。このような場合は、カスタム比較機能を提供することをお勧めしpriority_queueます...
struct NodeComparer
{
bool operator()(const node& left, const node& right)
{
return left.GetPriority() > right.GetPriority();
}
}
..。
std::priority_queue<node, std::vector<node>, NodeComparer> nodeQueue;
このようにしてpriority_queue、希望どおりに機能できますが、に非論理的な機能を追加することはありませんnode。