Supprimer des Entrées en Double dans un C++ Vecteur

Veux juste supprimer les doublons. La piscine est vector<pair<string, int>>, mais il me semble manquer de certains éléments au début du vecteur en quelque sorte. Quelqu'un peut-il vérifier la logique de la suppression? Merci 🙂

Pool Master::eliminateDuplicates(Pool generation)
{
    for(int i = 0; i < generation.size(); i++)
    {
        string current = generation.at(i).first;

        for(int j = i; j < generation.size(); j++)
        {
            if(j == i)
            {
                continue;
            }
            else
            {
                string temp = generation.at(j).first;
                if(current.compare(temp) == 0)
                {
                    Pool::iterator iter = generation.begin() + j;
                    generation.erase(iter);
                }
            }
        }
    }

    return generation;
}
Avez-vous l'esprit si elle obtient triés?
Eww, ces copies...
Plus facile (et probablement de façon plus rapide que la O(n^2) manière qu'il faut actuellement) de le faire est d'ajouter tous les éléments pour un std::set et ensuite revenir à une std::vector.
Aussi, je suppose que vous voulez dire Pool est un vector<pair<string, int>>?
Est cette déclaration if(j == i){continue;} nécessaire? Vous pouvez commencer la boucle de i+1.

OriginalL'auteur Jarrod Cabalzar | 2013-05-10