我有一张使用Boost图形库制作的图表。它基于adjaceny列表结构。我有一个顶点的简单定义。
struct Vertex
{
string unique_id_name;
};
我希望能够测试是否存在给定unique_id_name
的顶点。你怎么能这样做?
答案 0 :(得分: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
,则找不到您的顶点。