私は迷路を生成するプログラムを作っています。そして、迷路の中で道を見つけるために最初の探索をブレンドして使用します。この方法は、要素がある場合、完全なコンテナを横断しなければならないのでセット内のオブジェクトを見つける関数を作るにはどうすればよいですか?
bool Labyrinth::inVisited(const Coordinate &c, const coordinatePath &visited) const
{
for each (Coordinate coord in visited)
{
if(coord == c)
return true;
}
return false;
}
:要素がコンテナクラスに存在するかどうかを確認する私の機能について(coordinatePathベクトルのtypedefである)このようなベクターを使用しそれが存在しないと、大規模な検索では非常に効果がありません。私は、ベクトルの代わりにセットを使用するのと同じ機能を実装しようとしたと、このようにそれを書いた:
bool Labyrinth::inVisited(const Coordinate &c, const set<Coordinate> &visited) const
{
return (visited.find(c) != visited.end());
}
私は一番上が
エラー22のエラーである。ここで、iは、エラーの多くを得るrecomplieしようC2676:バイナリ '<': 'const Coordinate'は、この演算子または定義済み演算子c:\ program files(x86)\ microsoft visual studio 11.0 \ vc \ include \ xstddefに受け入れられる型への変換を定義しません。193
私はこれらの特定のデバッグメッセージを本当に理解していないし、この高速検索を実装する方法があるのだろうかと思っています!
@MSaltersが自由 'オペレータの何が問題でしたか<'? – pmr
すばやく対応いただきありがとうございます! – Mattias
@pmr: '座標(0,0)<(0,0)座標'厳格な弱い発注要件に違反している、 'true'をしました。一般に、すべての座標は自分自身でさえも同じではありませんでした。私はすべての座標が等しくなるように変更しました。これは有効です。 – MSalters