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
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
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!
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
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!![]()
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...
Partager