Qt fait "doublon" avec la STL dans le sens que certaines fonctions sont dupliquées. Mais Qt ne fait pas doublon dans le sens que les objectifs sont différents.
Qt essaye de fournir une API facile d'utilisation, cohérente, multi-platformes, intuitive.
Alors que la STL est plus bas niveau.
Par example, les conteneurs de Qt sont "implictly shared" ce qui permet de pouvoir passer des listes ou des chaîne de caractère d'une classe à l'autre de manière performante, très facilement et intuitivement.
Les conteneur STL ne le sont pas car cela veux dire que le la copie à lieu a des moment non déterministique, ce qui est une horreur pour la programmation temps réel.
La STL fait un usage important des templates, ce qui la rends plus difficile d'utilisation pour les novice. Un programmeur Qt peut s'en tirer sans connaître cette partie compliquée du C++.
Exemple, les conteneur STL permettent d'avoir un "allocateur" personalisé. Mais qui a vraiment besoin de ça ? Et ce n'est pas transparent pour l'utilisateur si on ne les utilise pas (les messages d'erreurs sont imbitables, ça apparaît dans l'auto-completion, impossible de forward-déclarer certaine classes, ...)
[^] # Re: Qt mais pas complètement ?
Posté par Gof (site web personnel) . En réponse au journal Sortie de exxEditor - version 0.9. Évalué à 4.
Qt essaye de fournir une API facile d'utilisation, cohérente, multi-platformes, intuitive.
Alors que la STL est plus bas niveau.
Par example, les conteneurs de Qt sont "implictly shared" ce qui permet de pouvoir passer des listes ou des chaîne de caractère d'une classe à l'autre de manière performante, très facilement et intuitivement.
Les conteneur STL ne le sont pas car cela veux dire que le la copie à lieu a des moment non déterministique, ce qui est une horreur pour la programmation temps réel.
La STL fait un usage important des templates, ce qui la rends plus difficile d'utilisation pour les novice. Un programmeur Qt peut s'en tirer sans connaître cette partie compliquée du C++.
Exemple, les conteneur STL permettent d'avoir un "allocateur" personalisé. Mais qui a vraiment besoin de ça ? Et ce n'est pas transparent pour l'utilisateur si on ne les utilise pas (les messages d'erreurs sont imbitables, ça apparaît dans l'auto-completion, impossible de forward-déclarer certaine classes, ...)