我使用邻接表实现了一个图,我现在正在尝试实现removeEdge函数。我能够使用邻接矩阵来做到这一点,但是这让我有些困惑。
到目前为止,这是我所拥有的,但是擦除部分是错误的,因此只需要一些操作上的帮助即可。
Map<K, AugmValue<V, M>>
如果有什么建议,我将不胜感激。
答案 0 :(得分:4)
使用iterator
查找要删除的元素。之后,使用erase
方法将其删除。
void removeEdge(int u, int v) {
// remove edge from u to v
vector<int>::iterator it = std::find(adv[u].begin(), adv[u].end(), v);
adv[u].erase(it);
// remove edge from v to u
it = std::find(adv[v].begin(), adv[v].end(), u);
adv[v].erase(it);
}