53 votes

Bibliothèque Boost

Depuis que j'ai commencé à utiliser ce site, j'entends toujours parler de la bibliothèque Boost. Je me demande quels sont certains des avantages majeurs de la bibliothèque Boost (donc pourquoi devrais-je l'utiliser), et comment le portable est le coup de pouce de la bibliothèque?

69voto

Loki Astari Points 116129

Boost est organisé par plusieurs membres du comité de la norme.
C'est donc un terrain fertile pour les bibliothèques qui sera dans le prochain standard.

  1. C'est une extension de la STL (il remplit les bits à gauche en sortant)
  2. Il est bien documenté.
  3. Il est bien évalué par les pairs.
  4. Il a une grande activité pour les bugs sont résolus très rapidement.
  5. Il s'agit d'une plateforme neutre et travaille partout.
  6. Il est libre d'utiliser.

Avec tr1 à venir bientôt, il est bon de savoir que boost a déjà beaucoup de terrain couvert. Beaucoup de bibliothèques dans tr1 sont essentiellement adaptées directement à partir de stimuler les originaux et ont donc été essayé et testé. La différence, c'est qu'ils ont été déplacés dans le std::tr1 espace de noms (plutôt que de boost).

Tout ce que vous devez faire est d'ajouter les éléments suivants à votre compilateurs par défaut incluent chemin de recherche de:

<boost-install-path>/boost/tr1/tr1

Puis, quand vous d'inclure les en-têtes standard boost va importer automatiquement tous les trucs dans l'espace de noms std::tr1

Par Exemple:

Pour utiliser std::tr1::share_ptr vous avez juste besoin d'include <memory>. Cela va vous donner toutes les smart pointers avec un seul fichier.

19voto

Mihai Limbășan Points 17205

Vous pouvez simplement lire le Boost Informations d'arrière-plan de la page pour obtenir un bref aperçu des raisons pour lesquelles vous devriez utiliser Boost et ce que vous pouvez l'utiliser pour. Valeur le peu de minutes qu'il faut.

16voto

argatxa Points 355

99% portable.

Je dirais qu'il a tout à fait un peu de bibliothèques qui sont vraiment utiles une fois que vous découvrez un besoin qui est résolu par boost. Soit vous code vous-même, ou si vous utilisez une très bonne bibliothèque. Après avoir éteint la veilleuse source pour des choses comme les Multi-Index, Lambda, les Options du Programme, RegEx, SmartPtr et de Tuple est incroyable...

La meilleure chose est de passer un peu de temps va par le biais de la documentation pour les différentes bibliothèques et d'évaluer si elle peut être d'aucune utilité pour vous.

Digne!!

13voto

Douglas Mayle Points 7216

Vous obtenez beaucoup de choses qui sont à venir dans C++0x. Mais au-delà de cette généralité, certains des meilleurs détails sont d'une simple bibliothèque Regex, un casting de la bibliothèque pour la conversion de chaînes à ints(Lexicale cast):

int iResult = 0;
try
{
    iResult = lexical_cast<int>("4");
}
catch(bad_lexical_cast &)
{
    cout << "Unable to case string to int";
}

Une date/heure de la bibliothèque, entre autres...

using namespace boost::gregorian;
date weekstart(2002,Feb,1);
date thursday_next = next_weekday(weekstart, Thursday); // following Thursday

Il y a également une interface Python(Boost Python), un lexer/parser DSL(Boost Esprit):

// A grammar in C++ for equations
group       = '(' >> expression >> ')';
factor      = integer | group;
term        = factor >> *(('*' >> factor) | ('/' >> factor));
expression  = term >> *(('+' >> term) | ('-' >> term));

et c'est juste à gratter la surface...

12voto

Brian R. Bondy Points 141769

Boost est une collection de bibliothèques C++. 10 de qui sont inclus dans tr1 de C++0x.

Vous pouvez commencer avec boost ici.

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