int removeDoublon(vector<string> & liste)
{
int cpt=0;
bool bFound=false;
vector<string> final;
vector<string>::iterator iterListe, iterFinal;
// Test de la validité de la liste
if (liste.empty())
return cpt;
// Init de la liste résultat
final.push_back(*liste.begin());
for (iterListe=liste.begin()+1; iterListe!=liste.end(); iterListe++)
{
// Recherche si ce n'est pas un doublon
bFound=false;
for (iterFinal=final.begin(); iterFinal!=final.end() && !bFound; iterFinal++)
{
if (0==iterListe->compare(*iterFinal))
{
// C'est un doublon, on passe à la chaîne suivante
cpt++;
bFound=true;
}
}
if (!bFound)
{
// Ce n'est pas un doublon, on l'ajoute à la liste finale
final.push_back(*iterListe);
}
}
liste=final;
return cpt;
}
//////////////////////////
// Exemple d'utilisation
//////////////////////////
vector<string>::iterator iter;
vector<string> liste;
liste.push_back("coucou");
liste.push_back("couCou");
liste.push_back("SALUT");
liste.push_back("sAlut");
liste.push_back("coucouuu");
liste.push_back("");
liste.push_back("coucou");
liste.push_back("coucou");
liste.push_back("SALUT");
liste.push_back("SALUTE");
for (iter=liste.begin(); iter!=liste.end(); iter++)
cout << *iter << " ";
cout << endl;
int cpt=removeDoublon(liste);
cout << cpt << " doublons enleves: ";
for (iter=liste.begin(); iter!=liste.end(); iter++)
cout << *iter << " ";
cout << endl;