STL - includes

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

Sezione dedicata operazioni insiemistiche su strutture ordinate.

5.6.1: includes

La funzione includes richiede in input gli iteratori che determinano due sequenze, chiamiamole S1 e S2 e ritorna true se S2 é un sottoinsieme di S1. Dunque il risultato é true se e solo se tutti gli elementi di S2 sono uguali ad elementi di S1.

Segue un esempio che dovrebbe spiegare meglio la cosa:

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

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[] = {1, 2, 3, 4};
int v2[] = {0, 1, 2, 3, 4, 5, 7, 99, 13};
int v3[] = {-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> s3(v3, v3 + sizeof v3/sizeof *v3);

if (includes(s2.begin(), s2.end(), s1.begin(), s1.end())) {
cout << "This set: ";
dump(s1);
cout << "is a subset of: ";
dump(s2);
}
if(includes(s2.begin(), s2.end(), s3.begin(), s3.end()) == false) {
cout << "While this set: ";
dump(s3);
cout << "is not." << endl;
}
}

Nessun commento:

Posta un commento