IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Supprimer les doublons d'une liste ou d'un vecteur


Sujet :

C++

  1. #1
    Membre habitué Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Points : 157
    Points
    157
    Par défaut Supprimer les doublons d'une liste ou d'un vecteur
    Bonjour,

    Je souhaiterais supprimer les doublons d'une liste ou d'un vecteur. J'ai vu qu'il existait dans <algorithm>, les fonctions unique et unique_copy bien que j'ai des exemples, je ne vois pas bien quel est le meilleur choix... De plus, vaut-il mieux stocker mes éléments dans une liste ou dans un vecteur ou dans quelque chose d'autres (list possède directement la fonction sort alors que pour vector je dois utiliser sort depuis <algorithm> etc.)?

    Cordialement,
    Rodrigue

  2. #2
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    Pour les fonctions unique et unique_copy, je ne les connais pas. Mais pourquoi ne pas utiliser des set ou des map si tu veux stocker des éléments de façon unique, et triée qui plus est ?

  3. #3
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 861
    Points
    11 861
    Par défaut
    unique supprime les doublons, unique_copy copie une suite d'éléments dans une autre séquence, sans doublons(elle les supprime a la volée quoi).
    Cependant set ordonne les éléments automatiquemenet, mais ne supprime pas les doublons tout seul, je crois.

  4. #4
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par Alp
    Cependant set ordonne les éléments automatiquemenet, mais ne supprime pas les doublons tout seul, je crois.
    Sauf erreur (toujours possible, je n'ai pas testé...), set ne permet pas d'ajouter deux fois la même valeur, contrairement à multi_set.

  5. #5
    Membre averti Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Points : 369
    Points
    369
    Par défaut
    Si le fait que les éléments soient triés en ordre croissant ne change rien pour toi, utilise un set.

    C'est un conteneur de la STL qui peut contenir des objets uniques seulement, et ils sont triés automatiquement.

    Référence: http://www.cppreference.com/cppset/index.html



    EDIT: Fautes d'orthographe

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    De plus, vaut-il mieux stocker mes éléments dans une liste ou dans un vecteur ou dans quelque chose d'autres (list possède directement la fonction sort alors que pour vector je dois utiliser sort depuis <algorithm> etc.)?
    C'est tout simplement que std::sort ne marche que pour les Random Access Iterators, donc pour les containers ne fournissant pas ces itérateurs il y a une fonction membre.

  7. #7
    Membre confirmé
    Avatar de NewbiZ
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2002
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2002
    Messages : 184
    Points : 563
    Points
    563
    Par défaut
    Citation Envoyé par Rodrigue
    De plus, vaut-il mieux stocker mes éléments dans une liste ou dans un vecteur
    Pose toi la question de l'accès : veux tu un accès linéaire ou aléatoire ?

  8. #8
    Membre averti Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Points : 369
    Points
    369
    Par défaut
    Voici un graph très intéressant, gracieuseté de Loulou:

    http://c.developpez.com/faq/cpp/imag..._conteneur.gif

  9. #9
    Membre habitué Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Points : 157
    Points
    157
    Par défaut
    Bonjour,

    Tout d'abord, merci pour vos réponses!
    L'organigramme est vraiment génial. Je le garde précieusement...
    Je pense que je vais utiliser un set. Je dois encore tester pour voir si cela convient à mon problème. En effet, j'utilise la librairie stxxl et je ne sais pas s'il est possible de stocker de tels éléments avec celle-ci (à mon avis oui!).
    Que se passe-t-il lorsque j'ajoute une clé déjà existante dans un set? Est-ce que cela génère une exception?

    Cordialement,
    Rodrigue

  10. #10
    Membre habitué Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Points : 157
    Points
    157
    Par défaut
    Je me réponds à moi même! Non, ça ne génère aucune exception
    Youpie, j'essaye ça et je vous tiens au courant...

  11. #11
    Membre averti Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Points : 369
    Points
    369
    Par défaut
    Que ca l'aie fonctionné ou non il va te renvoyer la position du nouvel élément

Discussions similaires

  1. Réponses: 16
    Dernier message: 03/06/2014, 07h39
  2. Supprimer les doublons d'une liste déroulante
    Par zanzie dans le forum Flash
    Réponses: 1
    Dernier message: 11/04/2011, 08h34
  3. Supprimer les doublons dans une liste
    Par inforum dans le forum SL & STL
    Réponses: 2
    Dernier message: 22/11/2009, 15h21
  4. Supprimer les doublons d'une liste
    Par bibi206 dans le forum Scheme
    Réponses: 23
    Dernier message: 13/06/2009, 09h53
  5. [E-03] Supprimer les doublons d'une liste
    Par Loki83 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/12/2008, 16h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo