3
我使用升壓graph_traits和定義如下圖:刪除多個頂點從一個boost ::的adjacency_list圖
typedef boost::adjacency_list <boost::setS, boost::vecS, boost::undirectedS, NodeInfo, EdgeInfo> Graph;
typedef boost::graph_traits<Graph>::vertex_descriptor Vertex;
我頂點的每個座標爲attatched,我打算找重複的頂點(頂點相同的位置)。所以我構建一個包含這些「羣」的列表:
std::vector<std::vector<Vertex>> clusters;
現在我試圖合併每個集羣中的一個單一的頂點(頂點列表)。要爲集羣clusters[i]
的每個頂點爲此,我呼籲:
boost::clear_vertex(v, graph)
boost::remove_vertex(v, graph);
但是我注意到,仍然重複保持。我想這與刪除索引時的變化有關,因爲我使用vecS
作爲頂點列表。
這是什麼原因,我該如何解決?
是否有可能進行排序頂點列表按降序排列,除去安全地刪除它們這種方式(如去除的索引我只應該影響指數>我在一個std ::向量)? – Chris
原則上,是的。但是,我會堅持記錄的穩定性/失效保證。和「remove_vertex(),當它與VertexList = vecS的adjacency_list一起使用時,會使圖表的所有迭代器和描述符無效」does ** not **會爲您提供lee-way。 – sehe
我測試了它,並沒有像我期望的那樣工作。也許我對內部工作原理的假設是錯誤的。現在我嘗試使用filtered_graph,但無法將其轉換回adjacency_list。 – Chris