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 :

vector vs tableau


Sujet :

SL & STL C++

  1. #1
    Membre confirmé Avatar de harsh
    Inscrit en
    Février 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 229
    Par défaut vector vs tableau
    Bonjour,

    Pour une utilisation qui se limite a des acces dans un tableau (mono ou bidimensionel), pourquoi aurais-je interet (si tel est le cas) a utiliser des vector?

    Merci

  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
    L'interet de vecteur est que tu n'as pas besoin de connaitre précisément la taille de ton tableau au moment où te le crée... Contrairement au tableau classique, où tu es obligé de faire un realloc() si tu vas dépasser!
    De plus, celà t'évite de trainer une variable dans ton programme qui t'indique la taille du tableau que tu manipule! -> tableau.size() est nettement plus amical!
    En tant que conteneur de la STL, vector possède des fonctions membres assez intéressantes aussi!

  3. #3
    Membre confirmé Avatar de harsh
    Inscrit en
    Février 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 229
    Par défaut
    Je comprend bien tout ca, mais donc dans mon cas c'est inutile voire meme anti-perfromant, c'est comme chasser à la grenade...

    Je cherche a savoir quelles sont les inconveniants d'utiliser des vecteurs à tort et a travers si il y en a

  4. #4
    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
    1) c'est optimisé comme conteneur = peu de perte de performance
    2) pas de risque de fuite de mémoire = programmation robuste

    Mais rien ne t'empeche d'utiliser des pointeurs

    Globalement les conteneurs sont plus sûr, et il est tjs temps d'optimiser lorsque tu es sûr que le goulot d'étranglement se situe à un endroit précis, que tu optimises!

  5. #5
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 292
    Par défaut
    La perte de perf, c'est selon les endroits:
    - rien sur les accès directs ou itératifs si ton compilo sait inliner
    - le coût d'une initialisation à 0 (T() pour être plus précis) lors des redimensionnements avec resize (pas avec push_back)
    Et gain par rapport à un try{} catch(...) {} pour forcer les libérations quelque soit le chemin emprunté.

    Personnellement, parmi mes optimisations, je remplace régulièrement des allocations manuelles par des vecteurs que je redimensionne à chaque trame reçue. Et que de toutes façons, on ne peut pas faire de realloc comme ça sur des données non POD.

    Je dirais de voir le document n1666 si on commence à pinailler sur ces aspects juste sur ouïe-dire.

    Le redimensionnement, c'est certes rigolo, mais les grosses forces du vecteur sont pour moi:
    - le RAII
    - la sémantique de valeur
    Le premier t'assure d'avoir un code simple à maintenir qui ne fuira pas à la moindre sortie prématurée, comme en particulier celles induites par les exceptions.

    La FAQ est ton amie.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

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

Discussions similaires

  1. Transformer les elément d'un vector en tableau simple de grande taille
    Par kamilia_85 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 08/02/2009, 23h59
  2. Réponses: 1
    Dernier message: 12/06/2008, 10h10
  3. Conversion vector en tableau String
    Par gdhugue1 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 19/03/2007, 17h36
  4. Problème de cast en transformant un Vector en tableau de String
    Par montabou dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 11/11/2006, 18h58
  5. [Collections] Conversion de Vector en tableau de String
    Par java_math dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 06/06/2004, 12h55

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