2012-02-07 8 views
0

私はBoostのグラフライブラリで作成したグラフを持っています。これはadjacenyリスト構造に基づいています。私は頂点の以下の簡単な定義を持っています。別の頂点が同じ属性値を持っているかどうか確認してください

struct Vertex 
{ 
    string unique_id_name; 
}; 

私は与えられたunique_id_nameとの頂点が存在するかどうかをテストできるようにしたいです。どのようにこれを行うことができますか?

答えて

2

std::find_if()を使用できます。たとえば、vertex_im_looking_forを探しているとします。

C++ 11を使用している場合は、std::find_if()にラムダを差し込むことができます。そうでなければ、標準のファンクタ(述語)をプラグインできます。

typename boost::graph_traits<Graph>::vertex_iterator vi, vi_end; 
tie(vi, vi_end) = vertices(my_graph); 

bool found = std::find_if(
    vi, vi_end,            
    [&](const Vertex& vertex){ 
    return vertex.unique_id_name==vertex_im_looking_for.unique_id_name; 
    } 
)!=vi_end; 

std::find_if()あなたは、あなたが探しているものが見つかったかどうかを確認するためにvi_endと比較できるようにイテレータを返します。それがvi_endに等しい場合、あなたの頂点は見つかりませんでした。

関連する問題