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 :

Set - savoir qu'on a tenté d'insérer un doublon


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Pas dans l'info
    Inscrit en
    Janvier 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Pas dans l'info

    Informations forums :
    Inscription : Janvier 2015
    Messages : 4
    Par défaut Set - savoir qu'on a tenté d'insérer un doublon
    Bonjour à tous,

    je suis nouveau et je débute en programmation
    et je souhaitais utiliser un objet set pour vérifier que je n'essaie pas d'insérer un doublon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    std::set<int> myset;
    myset.insert (1);
     
    int taille = myset.size();
    myset.insert (1);
    if (myset.size() == taille) cout << "g un doublon";
    Ne pourrait on pas faire quelque chose comme cela pour tester si on insère un doublon ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (myset.insert (1)) 
    // OU
    if (myset.insert (1) == 1)
    Deuxièmement comme çà a du se voir je ne sais pas utiliser l'objet set
    J'ai cherché mais ne trouve pas d'exemple simple
    Sommes nous obliger d'utiliser un itérator (je débute et n'est utilisé que vector pour le moment et set me semble bien plus compliqué)

  2. #2
    Membre émérite

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Billets dans le blog
    1
    Par défaut
    Bonjour et bienvenue !

    je souhaitais utiliser un objet set pour vérifier que je n'essaie pas d'insérer un doublon
    C'est peut être mal tourné; std::set est un conteneur comme std::vector.

    Il a la particularité de ne pas stocker deux fois le même objet.
    Vous ne pouvez donc pas utiliser sa taille pour identifier un doublon.

    Cepandant il est possible de vérifier si un objet est déjà présent grace à la fonction set.count(...);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <set>
    #include <iostream>
    int main()
    {
        std::set<int> set;
        std::cout << "1 est present : " << set.count(1) << std::endl; //0
        set.insert(1);
        std::cout << "1 est present : " << set.count(1) << std::endl; //1
        return 0;
    }
    L'utilisation de l'itérateur va dépendre de ce que vous voulez en faire, mais par exemple pour parcourir ce conteneur, ce sera nécessaire.

    Après je vous conseille grandement de vous habituer à la documentation (c'est même impératif), ce site et bien d'autre sont disponibles.

  3. #3
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 736
    Par défaut
    Bonsoir.

    D'après la documentation, std::set::insert() renvoie un std::pair<std::iterator, bool>. Ce booléen indique si l'insertion a bien eue lieu ou non.

    Donc un if(myset.insert(1).second) indique si l'insertion s'est bien déroulée.


    Citation Envoyé par dn2199 Voir le message
    Deuxièmement comme çà a du se voir je ne sais pas utiliser l'objet set
    Tu arrives déjà à insérer des éléments dans le set, c'est pas si mal.
    Est-ce que tu sais utiliser std::vector ? Si oui le fonctionnement est très similaire, à ceci près que std::vector ne gère pas les doublons.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Pas dans l'info
    Inscrit en
    Janvier 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Pas dans l'info

    Informations forums :
    Inscription : Janvier 2015
    Messages : 4
    Par défaut
    Merci beaucoup à tous les deux pour vos réponses
    çà peut paraitre un peu bête mais des fois on est coincé pour des conneries

  5. #5
    Membre Expert
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 872
    Par défaut
    @dn2199: Tu n'as pas idée à quel point...

    PS: Passe la discussion en résolu si c'est bon pour toi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-97] Erreur 13 lors d'une tentative de suppression de doublons d'une listbox
    Par Michel Delapouaitte dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 15/04/2009, 11h28
  2. Réponses: 6
    Dernier message: 26/08/2008, 15h37
  3. ne pas insérer de doublon
    Par tortuegenie dans le forum Langage SQL
    Réponses: 6
    Dernier message: 23/05/2008, 13h50
  4. Quand insérer : mysql_query("SET NAMES 'utf8'");
    Par Mister Paul dans le forum Requêtes
    Réponses: 18
    Dernier message: 17/02/2007, 23h08
  5. Manipulations binaires : savoir si un bit est "set"
    Par DiGiTAL_MiDWAY dans le forum Général Python
    Réponses: 2
    Dernier message: 18/09/2005, 16h42

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