2) Soit on converti le std::vector en std::set, puis on recopie le std::set dans le std::vector (on peut aussi choisir de conserver le std::set plutôt que de repasser au std::vector)
std::set<int> s;
unsigned int size = liste.size();
for (unsigned i = 0; i < size; ++i )
s.insert(vec[i]);
liste.assign(s.begin(), s.end()); // Sert uniquement à recopier le std::set dans le std::vector
Méthode 1) plus rapide s'il y a peu de doublons.
Méthode 2) plus rapide s'il y a beaucoup de doublons.
Pour avoir le nombre de doublons enlevés, il suffit de comparer la taille avant et après.
Modifié par cptpingu le 30/07/2013 à 12:36
1) Soit on utilise sort + erase + unique:
2) Soit on converti le std::vector en std::set, puis on recopie le std::set dans le std::vector (on peut aussi choisir de conserver le std::set plutôt que de repasser au std::vector)
Méthode 1) plus rapide s'il y a peu de doublons.
Méthode 2) plus rapide s'il y a beaucoup de doublons.
Pour avoir le nombre de doublons enlevés, il suffit de comparer la taille avant et après.