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 :

complexité des opérations sur les vector


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 219
    Par défaut complexité des opérations sur les vector
    Bonjour,

    Je me pose des questions au sujet de la complexité des opérations sur les vector.

    En voici quelques unes :

    • complexité de size()
    • complexité de capacity()
    • lors de la reallocation, quelle est la nouvelle taille ? le double de la capacité actuelle, la capacité actuelle +1 ?
    • l'opérateur [] est-il beaucoup plus rapide que at() ?


    Merci de m'éclairer !

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    complexité de size()
    O(1), c'est stocké.

    complexité de capacity()
    O(1), c'est stocké.

    lors de la reallocation, quelle est la nouvelle taille ? le double de la capacité actuelle, la capacité actuelle +1 ?
    C'est la taille courante multipliée par un facteur supérieur à 1 (probalement 1.5 ou 2 -- je pense que chaque implémentation est libre de choisir) ; bref ce n'est pas +1, donc la complexité amortie d'un push_back est bien en O(1).

    l'opérateur [] est-il beaucoup plus rapide que at() ?
    La fonction at() ne fait que tester si l'index est entre 0 et size() - 1.

  3. #3
    Membre expérimenté
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 219
    Par défaut
    pour ces réponses très précises.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2007
    Messages : 53
    Par défaut
    Citation Envoyé par Laurent Gomila Voir le message
    La fonction at() ne fait que tester si l'index est entre 0 et size() - 1.
    La fonction at(x) permet de récuperer la valeur à la position x de ton vector, et surtout, il gère les dépassements... Si ton vector a une taille de 10 et que tu fais monvector.at(23) il va te retourner une erreur aulieu de te retourner n'importe quelle valeur qui traine dans la mémoire...

  5. #5
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par pyknite Voir le message
    La fonction at(x) permet de récuperer la valeur à la position x de ton vector, et surtout, il gère les dépassements... Si ton vector a une taille de 10 et que tu fais monvector.at(23) il va te retourner une erreur aulieu de te retourner n'importe quelle valeur qui traine dans la mémoire...
    Sous visual, l'operateur [] le fait aussi mais tu peut l'enlever (je ne sais plus comment)

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Citation Envoyé par Mongaulois Voir le message
    Sous visual, l'operateur [] le fait aussi mais tu peut l'enlever (je ne sais plus comment)
    Seulement en debug à mon avis.

  7. #7
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    malheuresement non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include <vector>
     
    int main(int argc, char* argv[])
    {
        std::vector<int> vect(10);
        for(int i=0;i<11;++i) vect[i];
    	return 0;
    }
    donne en release
    Microsoft Visual Studio C Runtime Library has detected a fatal error in testvectorr.exe.
    lancé avec visual

    testvectorr.exe has encountered a problem and needs to close. We are sorry for the inconvenience.
    sans visual

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/04/2013, 11h53
  2. [TPW] Calculatrice effectuant des opérations sur les entiers longs
    Par forum dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 04/12/2011, 11h36
  3. Optimisation des opérations sur les grands nombres, algorithme de Knuth
    Par Jackyzgood dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 21/10/2010, 20h27
  4. Des opérations sur les mots
    Par nadia27 dans le forum Débuter
    Réponses: 5
    Dernier message: 05/01/2008, 13h18
  5. [2.0] Comment réaliser des opérations sur les ensembles ?
    Par Cereal123 dans le forum Framework .NET
    Réponses: 2
    Dernier message: 23/10/2006, 13h01

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