Citation Envoyé par jo_link_noir Voir le message
Justement non, list/map/set fragmentent la mémoire car chaque élément est alloué indépendamment. Cela augmente le risque de cachemiss et le nombre de déréférencement. De plus, le compilateur ne peut pas faire convenablement certaines optimisations (ex: préchargement de la mémoire)
Je suis pas familié avec le cachemiss et les optimisation du compilateurs mais je vois pour le nombre de déréférencement.

Citation Envoyé par jo_link_noir Voir le message
C'est bien cela. Mais il faut savoir que push_back contient un test conditionnel qui casse le pipeline et ralentit le programme quand le compilateur ne fait pas bien les optimisations (et cela arrive).
Je note, j'étais aussi sceptique quand à son utilisation comparé à l'utilisation de l'operator[]

Citation Envoyé par jo_link_noir Voir le message
D'ailleurs, en utilisant une structure intermédiaire, il est possible de ne rien initialiser:
Intéressant l'utilisation de ta structure uninitialized_storage

Citation Envoyé par jo_link_noir Voir le message
Mais il existe un constructeur prenant des iterateurs qui permettent d'initialiser les valeurs sans passer par le constructeur par défaut.
Aaahhhh évidemment... je débute avec la stl, pas encore trop l'habitude des constructions avec itérateurs. Je m'en souviendrai, il est clair que c'est la meilleure option!

Bon on dévie un peu du sujet d'origine mais j'aurai une dernière question au sujet de l'utilisation c++11 du move comparé à l'utilisation de pointeurs.
Allez je vais ouvrir un nouveau post.