![](/img/trans.png)
[英]Getting edge properties (including related vertices) from boost::adjacency_list
[英]Removing multiple vertices from a boost::adjacency_list graph
我正在使用boost graph_traits並定義了這樣的圖形:
typedef boost::adjacency_list <boost::setS, boost::vecS, boost::undirectedS, NodeInfo, EdgeInfo> Graph;
typedef boost::graph_traits<Graph>::vertex_descriptor Vertex;
我的每個頂點都有坐標,我打算找到重復的頂點(同一位置的頂點)。 所以我構建了一個包含這些“集群”的列表:
std::vector<std::vector<Vertex>> clusters;
現在我嘗試將每個聚類合並到一個頂點(頂點列表)中。 為此,我調用集群clusters[i]
每個頂點:
boost::clear_vertex(v, graph)
boost::remove_vertex(v, graph);
但是我注意到仍然存在重復。 我猜這與刪除時索引的變化有關,因為我使用vecS
作為頂點列表。
這是什么原因,我該如何解決?
對於vectorS
,描述符和迭代器一樣不穩定:它們在插入/移除時失效。 請參閱迭代器和描述符穩定性/無效
當然,那里描述的解決方案(使用listS
)可能不適用於您的情況。
在這種情況下,重新考慮您的問題,並考慮過濾圖形(不實際刪除頂點)或將頂點標記為已刪除。 看到這里尋找靈感:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.