41 votes

Pour STL ou! STL, telle est la question

Incontestablement, j'ai choisi d'utiliser la STL pour la plupart de la programmation en C++ projets. La question m'a été présenté récemment, cependant, "il n'y a aucun cas où vous ne l'auriez pas utiliser la STL?"...

Plus j'y pensais, plus j'ai réalisé que peut-être il DEVRAIT y avoir des cas où je choisis de ne pas utiliser la STL... Par exemple, un très grand, projet à long terme dont le code est prévu pour durer des années... peut-être un conteneur personnalisé solution qui s'adapte précisément aux besoins des projets en vaut la charge initiale? Que pensez-vous, existe-il des cas où vous choisissez de ne PAS TSL?

48voto

Greg Rogers Points 18119

Les principales raisons de ne pas utiliser STL sont les suivantes:

  1. Votre implémentation C ++ est ancienne et supporte des modèles épouvantables.
  2. Vous ne pouvez pas utiliser l'allocation dynamique de mémoire.

Les deux sont des exigences très rares dans la pratique.

Pour un projet à long terme, faire rouler vos propres conteneurs dont les fonctionnalités se chevauchent avec le STL ne fera qu'augmenter les coûts de maintenance et de développement.

27voto

Matt Price Points 9674

Il ya tellement de nombreux avantages à l'utilisation de la stl. Pour un projet à long terme les avantages l'emportent sur les coûts.

  1. Les nouveaux programmeurs être capable de comprendre les conteneurs à partir de la date de leur donner plus de temps pour apprendre le code des autres dans le projet. (en supposant qu'ils connaissent déjà TSL compétente programmeur C++ serait)
  2. Correction de bugs dans les conteneurs suce et des pertes de temps qui pourrait être consacré renforcement de la logique d'entreprise.
  3. Très probablement, vous n'allez pas écrire aussi bien que la STL est mis en œuvre, de toute façon.

Cela étant dit, les conteneurs STL n'a pas affaire à la concurrence d'accès à tous. Donc dans un environnement où vous avez besoin de simultanéité je voudrais utiliser d'autres récipients comme les Intel TBB simultanées des conteneurs. Ceux-ci sont beaucoup plus avancés à l'aide de précision, de verrouillage, tels que les différents threads peuvent être modifiant le récipient en même temps et vous n'avez pas à sérialiser l'accès au conteneur.

15voto

Evan Teran Points 42370

En général, je trouve que le meilleur choix est d'utiliser la STL avec des allocateurs personnalisés au lieu de remplacer les conteneurs de la STL par des conteneurs roulés à la main. La bonne chose à propos de la STL est que vous ne payez que pour ce que vous utilisez.

6voto

Trent Points 5924

Je pense que c'est un scénario de construction vs achat typique. Cependant, je pense que dans ce cas, j'achèterais presque toujours et utiliserais STL - ou une meilleure solution (quelque chose de Boost peut-être), avant de lancer la mienne. Vous devriez concentrer l'essentiel de vos efforts sur les tâches de votre application, et non sur les blocs de construction qu'elle utilise.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X