Bonjour,
Je souhaite faire l'intersection de deux set:
Ce code compile mais plante à l'exécution car l'espace mémoire n'a pas été alloué pour result.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 set<int> set1,set2; /* remplissage des sets */ vector<int> result; set_intersection(set1.begin(),set1.end(),set2.begin(),set2.end(),result.begin());
On peut donc l'initialiser de cette façon par exemple
En effet, l'intersection sera au plus de la taille du plus petit des 2 sets.
Code : Sélectionner tout - Visualiser dans une fenêtre à part result(min(set1.size(),set2.size()),-1);
Seulement je ne trouve pas cela très propre : je souhaiterai avoir un vector result dont la taille correspond réellement à l'intersection.
Est il possible de faire cela sans avoir calculer 2 fois l'intersection ?
Merci
Partager