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 :

rapidité de parcours d'un set


Sujet :

SL & STL C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 147
    Par défaut rapidité de parcours d'un set
    Bonjour à tous,
    je me demandais si le parcours d'un ensemble (Set) serait plus rapide que celui d'une liste ou d'un vecteur (ou même d'une map) pour un nombre d'élément inférieur à 5.

  2. #2
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    vector est le plus rapide

  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
    Pour un nombre d'éléments inférieur à 5 fais un tableau de taille 5 tout simplement.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 147
    Par défaut
    J'ai oublié de préciser qe je ne connais pas d'avance la taille du tableau.
    Taille = 5 c'est une estimation.

    Je sais q'en java les vecterr sont à proscrire par rapport aux listes:
    http://bruce-eckel.developpez.com/li...aduction/tij2/

    Type Get Iteration Insert Remove
    tableau 1430 3850 na na
    ArrayList 3070 12200 500 46850
    LinkedList 16320 9110 110 60
    Vector 4890 16250 550 46850

    Qu'en est-il en c++

  5. #5
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut
    la complexité est la suivante pour les operation de liste

    O(n)+ pour les vector
    constant pour les list
    O(n) pour les deque
    O(log(n))+ pour les map, set

    mais soit rassuré la difference est insignifiante pour des conteneur si petit que les tiens...

  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
    Par défaut
    ZaaN, merci d'éviter de dire n'importe quoi.
    L'insertion dans un vecteur en en O(1) amorti.
    L'insertion dans une liste est en O(1).
    L'insertion dans une deque en en O(1) amorti.
    L'insertion dans un set est en O(log n).

    Je ne vois pas trop à quoi ton "+" correspond.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 147
    Par défaut
    Citation Envoyé par ZaaN
    mais soit rassuré la difference est insignifiante pour des conteneur si petit que les tiens...
    Encore une imprecision de ma part : il se peut que je parcours plusieurs millions de fois ce contener de taille à priori inf à 5.
    Il est vrai que les complexités cités devraient avoir un impact insignifiant sur un conteneur de taille 5.
    Mais qu'en ai-t-il lorsque l'on parcours 1 millions de fois un conteneur de taille 5?
    Quel conteneur serait le plus rapide en terme de parcours (de lecture) en excluant le tableau qui ne pourras être de 2 dimenions variables (car inconnue lors de l'initialisation)

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par défaut
    Les complexités citées ne concernaient pas le parcours. Le parcours de tous les conteneurs est en O(n). Mais std::vector (ou les tableaux C) sera un peu plus rapide car c'est le conteneur le plus simple et ses éléments sont contigus en mémoire.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 147
    Par défaut
    merci pour vos réponses

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

Discussions similaires

  1. executeQuery dans le parcours d'un result set ?
    Par xxkirastarothxx dans le forum JDBC
    Réponses: 0
    Dernier message: 14/04/2010, 16h57
  2. Rapidité de parcours d'un fichier
    Par theawe dans le forum MFC
    Réponses: 6
    Dernier message: 22/12/2009, 18h04
  3. De la rapidité du code
    Par jfloviou dans le forum Contribuez
    Réponses: 233
    Dernier message: 29/05/2009, 02h17
  4. parcours particulier d'un set
    Par befalimpertinent dans le forum SL & STL
    Réponses: 6
    Dernier message: 14/06/2008, 02h03
  5. character set // Nls_lang
    Par fopicht dans le forum Oracle
    Réponses: 2
    Dernier message: 23/05/2002, 12h04

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