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