2012-02-07 60 views
0

我有一個使用Boost圖庫創建的圖。它基於鄰接列表結構。我有以下一個頂點的簡單定義。檢查另一個頂點是否具有相同的屬性值

struct Vertex 
{ 
    string unique_id_name; 
}; 

我希望能夠以測試是否與給定unique_id_name頂點存在。你怎麼能這樣做?

回答

2

您可以使用std::find_if() - 例如,假設您正在尋找vertex_im_looking_for

如果你使用的是C++ 11,你可以插入一個lambda到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,則找不到頂點。

相關問題