检查另一个顶点是否具有相同的属性值

时间:2012-02-07 01:52:04

标签: c++ boost graph

我有一张使用Boost图形库制作的图表。它基于adjaceny列表结构。我有一个顶点的简单定义。

struct Vertex
{
    string unique_id_name;
};

我希望能够测试是否存在给定unique_id_name的顶点。你怎么能这样做?

1 个答案:

答案 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,则找不到您的顶点。