1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| std::unordered_set<std::array<int, 3>> edgesdiff(Graph const& g1,Graph const& g2){
std::unordered_set<edge_iter> v1,v2,diff;
std::unordered_set<std::array<int, 3>> res;
edge_iter ei1, ei1_end;
edge_iter ei2, ei2_end;
for (tie(ei1, ei1_end) = edges(g1); ei1 != ei1_end; ++ei1){v1.insert(ei1);}
for (tie(ei2, ei2_end) = edges(g1); ei2 != ei2_end; ++ei2){v2.insert(ei2);}
std::set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), std::inserter(diff, diff.begin()));
for(auto x:diff){
std::array<int, 3> t;
vertex_t from = source(*x, g1);
t[0]=g1[from].id;
vertex_t to = target(*x, g1);
t[1]=g1[to].id;
edge_t edg = edge(from, to, g1);
t[2]=g1[edg.first].label;
res.insert(t);
}
return res;
} |
Partager