Ce que vous demandez est vec3
être l'intersection des deux autres. Jalf montre comment remplir vec3
en utilisant la fonction std::set_intersection
de the <algorithm>
header. Mais rappelez-vous que pour que les fonctions set fonctionnent, les vecteurs doivent être triés.
alors vous voulez vec1
et vec2
pour être la différence entre eux et vec3
. Dans la notation de jeu:
Vous pouvez utiliser la fonction std::set_difference
pour cela, mais vous ne pouvez pas l'utiliser pour modifier les vecteurs en place. Vous auriez à calculer un autre vecteur pour tenir la différence:
std::vector<foo> temp;
std::set_difference(vec1.begin(), vec1.end(),
vec3.begin(), vec3.end(),
std::back_inserter(temp));
vec1 = temp;
temp.clear();
std::set_difference(vec2.begin(), vec2.end(),
vec3.begin(), vec3.end(),
std::back_inserter(temp));
vec2 = temp;
Quel est le type d'éléments? Sont-ils comparables? Y a-t-il seulement 4 éléments? –
oui ils sont comparables et pas seulement 4 élément – yesraaj
http://stackoverflow.com/questions/421573/best-way-to-extract-a-subvector-from-a-vector –