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?
Réponses
Trop de publicités?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.
- C'est une extension de la STL (il remplit les bits à gauche en sortant)
- Il est bien documenté.
- Il est bien évalué par les pairs.
- Il a une grande activité pour les bugs sont résolus très rapidement.
- Il s'agit d'une plateforme neutre et travaille partout.
- 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.
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.
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!!
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...
Boost est une collection de bibliothèques C++. 10 de qui sont inclus dans tr1 de C++0x.
Vous pouvez commencer avec boost ici.