J'ai exécuté 3 expériences différentes impliquant des listes et des vecteurs C ++.
Ceux avec des vecteurs se sont révélés plus efficaces, même lorsque de nombreuses insertions au milieu étaient impliquées.
D'où la question: dans quel cas les listes ont-elles plus de sens que les vecteurs?
Si les vecteurs semblent plus efficaces dans la plupart des cas, et compte tenu de la ressemblance de leurs membres, quels avantages restent-ils pour les listes?
Générez N entiers et placez-les dans un conteneur afin que le conteneur reste trié. L'insertion a été effectuée naïvement, en lisant les éléments un par un et en insérant le nouveau juste avant le premier plus grand.
Avec une liste, le temps passe par le toit lorsque la dimension augmente, par rapport aux vecteurs.Insérez N entiers à la fin du conteneur.
Pour les listes et les vecteurs, le temps a augmenté du même ordre de grandeur, bien qu'il ait été 3 fois plus rapide avec les vecteurs.Insérez N entiers dans un conteneur.
Démarrer la minuterie.
Triez le conteneur en utilisant list.sort pour les listes et std :: sort pour les vecteurs. Arrêtez la minuterie.
Encore une fois, le temps augmente du même ordre de grandeur, mais il est en moyenne 5 fois plus rapide avec les vecteurs.
Je pourrais continuer à effectuer des tests et à trouver quelques exemples où les listes s'avéreraient meilleures.
Mais l'expérience commune de vous qui lisez ce message pourrait fournir des réponses plus productives.
Vous avez peut-être rencontré des situations où les listes étaient plus faciles à utiliser ou plus performantes?
list
probablement mieux si vous supprimez beaucoup d'éléments. Je ne crois pas qu'une vector
volonté rendra la mémoire au système jusqu'à ce que le vecteur entier soit supprimé. Gardez également à l'esprit que votre test n ° 1 ne teste pas le temps d'insertion seul. C'est un test combinant recherche et insertion. C'est de trouver l'endroit où insérer où list
est lent. L'insertion réelle sera plus rapide que le vecteur.