私は迷路を生成し、ブレッドファースト検索を使用して迷路内の道を見つけるプログラムを作成しています。コンテナクラスに要素が存在するかどうかを確認する私の関数は、次のようにベクトルを使用するようになりました(ここで、coordinatePath はベクトルの typedef です)。
bool Labyrinth::inVisited(const Coordinate &c, const coordinatePath &visited ) const
{
for each (Coordinate coord in visited)
{
if(coord == c)
return true;
}
return false;
}
要素が存在しない場合、このメソッドはコンテナ全体をトラバースする必要があるため、大規模な検索には非常に効果的ではありません。ベクトルの代わりにセットを使用する同じ関数を実装しようとして、次のように記述しました。
bool Labyrinth::inVisited(const Coordinate &c, const set<Coordinate> &visited ) const
{
return (visited.find(c) != visited.end());
}
再準拠しようとすると、最上位の場所で多くのエラーが発生します
エラー 22 エラー C2676: バイナリ '<' : 'const Coordinate' は、この演算子または事前定義された演算子 c:\program files (x86)\microsoft visual studio 11.0\vc\include\xstddef 193 に受け入れられる型への変換を定義していません
私はこれらの特定のデバッグ メッセージをよく理解していません。この高速な検索を実装する方法があるかどうか疑問に思っています。