0
我有一個使用Boost圖庫創建的圖。它基於鄰接列表結構。我有以下一個頂點的簡單定義。檢查另一個頂點是否具有相同的屬性值
struct Vertex
{
string unique_id_name;
};
我希望能夠以測試是否與給定unique_id_name
頂點存在。你怎麼能這樣做?
我有一個使用Boost圖庫創建的圖。它基於鄰接列表結構。我有以下一個頂點的簡單定義。檢查另一個頂點是否具有相同的屬性值
struct Vertex
{
string unique_id_name;
};
我希望能夠以測試是否與給定unique_id_name
頂點存在。你怎麼能這樣做?
您可以使用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
,則找不到頂點。