J'ai commencé par utiliser std::(w)de la chaîne et les conteneurs STL exclusivement et en le convertissant vers/à partir de l'intervalle Qt équivalents, mais j'ai déjà changé pour QString et je trouve que je suis en utilisant Qt sur les contenants de plus en plus.
Quand il s'agit de chaînes de caractères, QString offre beaucoup plus de fonctionnalités complètes par rapport à std::basic_string et il est
complètement conscient unicode. Il propose également une efficace mise en œuvre de la VACHE, que j'ai appris à compter sur la très.
Qt sur les conteneurs:
- offrir la même VACHE mise en œuvre comme dans QString, ce qui est extrêmement utile lorsqu'il s'agit de l'utilisation de Qt foreach macro
(une copie) et lors de l'utilisation de metatypes ou les signaux et les slots.
- pouvez utiliser la STL style itérateurs ou Java-les itérateurs de style
- sont diffusables avec QDataStream
- sont largement utilisés dans l'API de Qt
- avoir une version stable de la mise en œuvre à travers des systèmes d'exploitation. Un STL mise en œuvre doit obéir à la norme C++, mais
est par ailleurs libre de faire comme il lui plaît (voir le std::string VACHE controverse). Certains STL implémentations sont particulièrement
mauvais.
- fournir des tables de hachage, qui ne sont pas disponibles, sauf si vous utilisez TR1
Le QTL a une philosophie différente de la STL, qui est bien résumée par J. Blanchette: "Considérant que la STL conteneurs sont optimisés pour la vitesse brute, Qt sur les classes de conteneurs ont été soigneusement conçu pour fournir la commodité, le minimum de l'utilisation de la mémoire, et un minimum de code d'extension."
Le lien ci-dessus fournit plus de détails sur la mise en œuvre du QTL et que les optimisations sont utilisés.