Boost est récemment devenu disponible sur le projet sur lequel je travaille, et je n'ai pas beaucoup d'expérience avec lui. La bibliothèque a tellement de parties et de fonctionnalités qu'il est difficile de savoir par où commencer pour l'apprendre - d'autant plus que je vais essayer de l'apprendre tout en créant du code de production (donc ça ne peut pas trop me ralentir).
J'apprécierais grandement que quelqu'un puisse énumérer environ 3 à 5 fonctionnalités qui sont très utiles en général, une programmation quotidienne et indiquer pourquoi elles sont utiles. Ensuite, je peux commencer à les apprendre et à les utiliser - cela me donnera au moins un pied dans la bibliothèque et un endroit convivial pour commencer à l'apprendre / à l'appliquer :)
Merci d'avance!
Réponses:
Si vous utilisez un compilateur pré TR1, des pointeurs intelligents
Si votre compilateur possède déjà des pointeurs intelligents, utilisez-les.
La raison en est évidente C ++ sans pointeurs intelligents n'est fondamentalement pas C ++
Les bibliothèques boost ptr_contaier.
Tous les conteneurs STL ont été réimplémentés spécifiquement pour contenir des pointeurs. Non seulement les conteneurs s'approprient les pointeurs de sorte que lorsque le conteneur est détruit, il détruit automatiquement tous les pointeurs. MAIS il fournit également des accès aux éléments en tant que références d'objet normales (pas des pointeurs), ce qui facilite l'utilisation des objets dans des algorithmes standard sans foncteurs wrapper.
Les bibliothèques boost lambda. (voir commentaire ci-dessous)
Les foncteurs et classeurs STL conviennent pour les choses simples. Mais boost :: lambda a franchi la prochaine étape et rend les choses beaucoup plus simples lors de l'utilisation des algorithmes standard.
boost :: any et boost :: variante
Lorsque vous devez tenir des objets sans vouloir connaître leur type exact.
Conteneurs multi-index
Conteneurs qui permettent plusieurs façons d'accéder aux éléments.
Fini le temps où vous avez un vecteur d'objets et une carte distincte pour une recherche rapide. Cela réduit le passe-partout que vous devez écrire pour maintenir les deux conteneurs lors de l'insertion / suppression d'éléments dans les conteneurs.
boost :: lexical_cast
Probablement le moins utile dans la vie réelle mais avec beaucoup de plaisir à jouer avec boost :: lexical_cast. Il convertit n'importe quel objet en / à partir d'une chaîne (tant que ce type a les opérateurs << et >> appropriés définis). Très utile pour vider les messages d'erreur lors du débogage.
la source
Boost n'est ni un framework, ni une bibliothèque. Il s'agit d'une collection de bibliothèques dont la qualité est contrôlée par des pairs. Vous n'apprenez pas Boost. Les bibliothèques sont individuelles - quand vous avez besoin de quelque chose, vous vérifiez si c'est dans Boost, si c'est le cas, alors vous apprenez cette bibliothèque. C'est ça. Vous ne pouvez pas avoir une compréhension de boost :: optionnel pour obtenir une compréhension de boost :: variant.
la source
Boost est une collection de bibliothèques. La prochaine fois que vous ferez un code kata, choisissez une bibliothèque dans Boost qui pourrait vous aider et utilisez-la. La documentation est très bonne et vous ne devriez pas avoir de problèmes pour choisir des utilisations simples. Les plus complexes viendront lorsque vous essayez de faire des choses plus intelligentes.
Exemple: un singleton thread-safe avec boost :: thread call_once.
Exemple: lire un fichier de configuration de key: value à l'aide de tokenizer.
la source