Bonjour,
J'aimerais savoir qu'elle est la différence au niveau rapidité entre une liste chainée classique et le vector de la STL.
Merci
Version imprimable
Bonjour,
J'aimerais savoir qu'elle est la différence au niveau rapidité entre une liste chainée classique et le vector de la STL.
Merci
Salut !
Le vector n'est pas une liste chaîné...
Les vector sont des abstractions des tableaux... pour les listes chaînées, il y a list
Par contre pour ce qui est des performances, je pense logiquement que liste sera plus performant, du fait que ça a été développé pour faire partie de la librairie standard de C++, de nombreuses optimisation ont du être faite ;)
Effectivement, les list de la STL ont été écrites, profilées, ... pour avoir une performance en général optimal. En revanche, il est des cas où écrire une liste soi-même permet d'optimiser des cas particuliers. Mais cela ne doit se faire qu'après vérification que le goulot d'étranglement est la liste à l'aide d'un profiler.
Merci pour vos réponses :D
Je débute totalement dans l'utilisation de la STL ce qui explique certaines confusions de ma part (list et vector).
En fait je suis confronté au pb ultra classique en c++ cad réallouer de la mémoire pour un tableau.
Dans la FAQ ils disent qu'il vaut mieux utiliser les vectors de la STL plutot que de le faire à la main parce que c'est assez fastueux (c'est vrai ;) ).
Par contre il ne disent pas quelle solution est la plus rapide, d'où ma question.
La question de la rapidité ne se posera que lors de l'optimisation des performances. Pour l'instant, le plus rapide est d'utiliser la STL, non pas forcément en terme de conco CPU, mais en terme de conso temps de programmation.
Dans une première phase de codage, le seul critère de performance à prendre en compte à mon avis est celui de la complexité algorithmique. Si on sait que l'on va sans cesse insérer des éléments au beau milieu de notre collection, utiliser un std::vector ne sera jamais bon, une std::list sera toujours plus appropriée.
Si l'on sait que l'on va passer son temps à accèder dans le désordre à des éléments, c'est le contraire.
Loulou a écrit un doc sur le choix du bon conteneur (http://c.developpez.com/faq/cpp/?pag...hoix_conteneur)
Ce qu'il ne faut surtout pas faire, c'est des micro-optimisations qui prennent du temps, rendent le code illisible, et souvent ne serviront à rien, tant qu'on ne part pas d'un projet fonctionnant et avec l'aide d'un profiler.
Pour ce qui est du choix STL/autre classe, la STL reprend les cas les plus courants (exception des hashtables, ça devrait être réparé dans une prochaine version), et en général, elle convient assez bien. Il existe des cas où l'on a des informations supplémentaires qui nous permettent d'aller plus loin, mais c'est assez rare.