Bonjour,
Je souhaite faire l'intersection de deux set:
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());
Ce code compile mais plante à l'exécution car l'espace mémoire n'a pas été alloué pour result.
On peut donc l'initialiser de cette façon par exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
result(min(set1.size(),set2.size()),-1);
En effet, l'intersection sera au plus de la taille du plus petit des 2 sets.
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