Sezione dedicata operazioni insiemistiche su strutture ordinate.
5.6.4: set_symmetric_difference
Con set_symmetric_difference() si genera una sequenza che é l'"or-esclusivo" tra le due sequenze passate. Ovvero la sequenza risultante contiene tutti e soli gli elementi che sono in una delle due sequenze passate, ma non in entrambe.
Ad esempio:
#include<iostream>
#include<algorithm>
#include<set>
#include<vector>
using namespace std;
void dump(const set<int>& v) {
set<int>::const_iterator it = v.begin();
while (it != v.end()) {
cout << *it++ << ' ';
}
cout << endl;
}
int main() {
int v1[] = {0, 1, 2, 3, 4, 5, 7, 99, 13};
int v2[] = {-2, 5, 12, 7, 33};
set<int> s1(v1, v1 + sizeof v1 / sizeof *v1);
set<int> s2(v2, v2 + sizeof v2 / sizeof *v2);
set<int> result;
set_symmetric_difference(s1.begin(), s1.end(), s2.begin(), s2.end(),
inserter(result, result.begin()));
cout << "The ex-or between: ";
dump(s1);
cout << "and: ";
dump(s2);
cout << "yields to: ";
dump(result);
}
Nessun commento:
Posta un commento