STL - set_difference

Dal quinto capitolo di Designing Components with the C++ STL, di Ulrich Breymann. Algoritmi standard.

Sezione dedicata operazioni insiemistiche su strutture ordinate.

5.6.4: set_difference

Con set_difference() si genera una sequenza che é la differenza tra le due sequenze passate. Ovvero la sequenza risultante contiene tutti e soli gli elementi che sono nella prima sequenza ma non nella seconda.

Ad esempio:

#include<iostream>
#include<algorithm>
#include<set>
#include<vector>

using namespace std;

void dump(const set& 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 s2(v2, v2 + sizeof v2 / sizeof *v2);

set<int> result;

set_intersection(s1.begin(), s1.end(), s2.begin(), s2.end(),
inserter(result, result.begin()));

cout << "The intersection between: ";
dump(s1);
cout << "and: ";
dump(s2);
cout << "yields to: ";
dump(result);
}

Nessun commento:

Posta un commento