Mi chiedo se nella libreria standard ci sia qualche possibilità di calcolare l'intersezione impostata e impostare la differenza tra due intervalli ordinati. Qualcosa con una firma lungo le linee di:set_difference e set_intersection contemporaneamente
template <class Input1, class Input2,
class Output1, class Output2, class Output3>
Output3 decompose_sets (Input1 first1, Input1 last1,
Input2 first2, Input2 last2,
Output1 result1, Output2 result2,
Output3 result3);
Tale che dopo una chiamata a decompose sets
, result1
contiene tutti gli elementi [first1,last1)
che non sono in [first2,last2)
, result2
contiene tutti gli elementi [first2,last2)
che non sono in [first1,last1)
, e result3
contiene tutti gli elementi che sono comuni in [first1,last1)
e [first2,last2)
.
Le implementazioni di esempio di set_difference
e set_intersection
di cplusplus.com sembrano come se possano aiutarmi a creare un'implementazione efficiente che esegue solo una scansione anziché tre. Se è nella libreria standard, però, non vorrei reinventare la ruota.
esempio, su richiesta:
Dati due insiemi a = {0, 1, 2, 3, 4} e b = {2, 4, 5, 6} allora vorrebbe costruire seguenti tre insiemi:
- only_a = {0,1,3}
- only_b = {5,6}
- comune = {2,4}
Come mai '[first1, last2)'? – P0W
Puoi dare un esempio di ciò che vuoi ottenere, ad esempio con gli insiemi {0, 1, 2, 3} e {0, 2, 4, 6}? – cpp
@ P0W b/c di typos – cheshirekow