Les Snippets

Connexion

Supprimer les doublons d'un tableau de chaines

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 07/07/2008 08:23:59 et initié par PCPT [Liste]
Vue : 9282
Catégorie(s) : Chaîne de caractères
Langages dispo pour ce code :
- VB6, VBA
- PHP 5
- C++
- C# 2.x, C# 3.x
- VB 2005, VB 2008
- Voir tous les langages pour ce code snippet



Langage : C++
Date ajout : 22/07/2008
Posté par buno [Liste]
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;

Remarque :
Le test est "case sensitive":
coucou et couCou ne sont pas des doublons

Snippets en rapport avec : Tableau, Supprimer, Doublons, Chaines



Codes sources en rapport avec : Tableau, Supprimer, Doublons, Chaines

{Visual Basic, VB6, VB.NET, VB 2005} COMPRESSION
Fonction pour comprimer un tableau de byte...

{Visual Basic, VB6, VB.NET, VB 2005} SUPPRIMER UN ÉLÉMENT D'UN TABLEAU
Lorsque vous créez des tableaux dynamiques en VB, vous serez peut-être ammenés à avoir besoin de sup...

{Visual Basic, VB6, VB.NET, VB 2005} TRI PAR INSERTION
Les listes triées sont très pratiques pour des quantités de données limitées : une liste semble pouv...

{C / C++ / C++.NET} ALGORITHME DE TRI D'UN TABLEAU PAR ORDRE CROISSANT OU DÉCROISSANT.
Bonjour, Le code source que je vais présenter est simple mais on y pense pas tout le temps. Il cla...

{Visual Basic, VB6, VB.NET, VB 2005} SÉRIALISTION - DÉSERIALISATION DE TABLEAUX ET COLLECTIONS
Après la source pour la sérialisation - désérialisation d'une LameGrid (que j'ai amélioré d'ailleurs...

{Delphi} UTILISER LES COMPOSANTS PAR LEURS NUMÉROS
Le principe : 1. Parcourir tous les composants d'une forme. 2. Y choisir le composant voulu et l'i...

{Javascript / DHTML} MOOTABLEAU
Une classe mooTools qui transforme une balise table en un ensemble div/tables qui permet de visualis...

{Visual Basic, VB6, VB.NET, VB 2005} JEU DE PENDU (COUIC 1 DE +)
Lundi, 01 Février 2010 04:58 un petit jeu de pendu réalisé sous vb 2008 express But du jeu : ...

{Visual Basic, VB6, VB.NET, VB 2005} SUPPRESSION DES DOUBLONS DANS PLAGE EXCEL
Liminaire : La méthode Range.AdvancedFilter Action:=xlFilterInPlace, Unique:=True proposée par ...

{Delphi} TABLEAU DE BOUTONS DYNAMIQUES (AGENDA)
L'agenda par lui même n'a que très peu d'intérêt et ne constitue pas le but de cet envoi. Le thème ...