STLキューを使用して、グラフ上にBFS(幅優先検索)を実装しています。そのノードが既にキューに存在しない場合は、キュー内のノードをプッシュする必要があります。しかし、STLのキューはnot allow iteration through its elementsなので、STL find関数を使うことはできません。アイテムがSTLキューに既に存在するかどうかを確認します。
各ノードに訪問時にマークするフラグを使用し、フラグがfalseの場合にのみそれらをプッシュすることができますが、BFSを複数回実行する必要があり、毎回、すべてのフラグをリセットする必要がありますので、フラグの代わりにカウンタを使用することになりましたが、キュー内のアイテムを見つける標準的な方法があるかどうかを知りたいと思っています。
グラフにノードの色を保存する別のデータストアが必要です。各ノードにキーとして使用できる一意の識別子がある場合、 'std :: map'を使ってノードの色(白、灰色、黒)を保存することができます。ほとんどの実装で 'std :: map'がRBツリーとして実装されているので、' O(log(n) ')となります。 – Vikas
@Vikas:これは、各ノードにカウンタを割り当てるのと同じだと考えています。 – Ari
BFSは訪問されていない、訪問済みではなく未完了の3つの状態を経ていますが、各ノードにカウンタを割り当てることで意味するものはわかりません。 – Vikas