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

SL & STL C++ Discussion :

implémentation des sets?


Sujet :

SL & STL C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 3
    Par défaut implémentation des sets?
    Bonjour, je suis etudiant en 3eme anée dinformatique et dans le cadre de mon projet de licence je m'interesse a la facon dont sont gerer les données au sein d'un set, et de ce fait la complexité des algorithme (insert et find notamment)
    j'ai deja bien cherché mais ce que je trouve ne semble pas concorder puisque j'ai vu que les set etait generalement implementé a la facon des ABR voire des arbre rouge et noir, cependant jai egalement vu ke les operations etait en O(n), et enfin j'ai egalement entendu parler de conteneur associatif avec des histoires de (clés,value) que je ne comprend pas tres bien avrai dire. si quelquun pouvait meclairer dici la fin de semaine sur la veritable implementation.. Alors dans ce cas merci beaucoup d'avance

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Les set sont tout simplement des arbre binaires.

    Que tu les nomme arbre binaire, arbre rouge noir ou ABR, ce n'est en définitive chaque fois que la même chose, à quelques détails minimes près

    La recherche se fait en O(log(n)) selon le principe du
    • si je cherche une valeur plus petite que la valeur actuelle, je vais à gauche
    • si je cherche une valeur plus grande, je vais à droite
    • si la valeur que je recherche n'est pas plus petite que la valeur actuelle, et qu'elle n'est pas non plus plus grande, c'est donc que j'ai trouvé la valeur que je cherchais (il s'agit en réalité de trouver une équivalence de valeur, et non une égalité)

    La complexité de l'insertion est généralement algorithmique ou algorithmique amortie (en Nlog(N) s'il s'agit d'insérer N éléments préalablement triés)

    La différence entre la map et le set tient tout simplement dans le fait que la clé (la valeur identifiant l'objet de manière unique) et l'objet sont deux choses différentes pour la map (p.e map<int, objet> ou l'entier est la clé et objet est... l'objet (qui l'aurait deviné :quesiton ) alors que la clé est l'objet pour le set, mais il s'agit dans les deux cas de conteneurs associatifs.
    Si la clé n'est pas un type primitif - qu'il s'agisse de la clé pour les map ou de l'objet pour les set - il s'agira de prévoir un prédicat permettant de déterminer si objet1 est plus petit que objet2 (prédicat "less")
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    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
    Par défaut
    La recherche comme l'insertion sont logarithmiques, et ce sans analyse amortie.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 3
    Par défaut
    Merci beaucoup pour cette reponse rapide et claire. Bonne continuation!

  5. #5
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Petit détail : Les set et map sont implémentés sous forme d'arbres rouges noirs, mais l'interface d'utilisation de ces conteneurs fait totalement abstraction de ça, et l'utilisateur peut très bien ignorer que ce genre d'arbres est utilisé derrière. D'où la notion d'interface par clef/valeur pour les maps, et non une notion de parcours d'arbre.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

Discussions similaires

  1. [VB.NET] Récupération des settings dans un autre module
    Par boulete dans le forum Windows Forms
    Réponses: 1
    Dernier message: 20/04/2006, 16h05
  2. Utilisation des sets
    Par Original Prankster dans le forum SL & STL
    Réponses: 6
    Dernier message: 08/02/2006, 21h28
  3. implémentation des opérateurs de comparaison
    Par niko8181 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 28/04/2005, 11h58
  4. Implémentation des objets en mémoire
    Par SteelBox dans le forum C++
    Réponses: 6
    Dernier message: 15/01/2005, 21h38
  5. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 16h19

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