boost Tutoriel
Démarrer avec boost
Recherche…
Remarques
Qu'est-ce que Boost?
Boost est une vaste collection de bibliothèques C ++ gratuites et de haute qualité couvrant un large éventail de sujets. Il est souvent considéré comme une "deuxième bibliothèque standard" pour C ++, car de nombreux problèmes courants en C ++ sont résolus en utilisant Boost.
De boost.org :
Boost fournit gratuitement des bibliothèques source C ++ portables évaluées par des pairs.
Nous privilégions les bibliothèques qui fonctionnent bien avec la bibliothèque standard C ++. Les bibliothèques Boost sont destinées à être largement utiles et utilisables dans un large éventail d'applications. La licence Boost encourage les utilisations commerciales et non commerciales.
Certaines bibliothèques Boost ont même fait leur entrée dans la bibliothèque standard C ++ 11, et d'autres, comme Boost.Optional et Boost.Variant , feront partie de C ++ 17.
Que peut faire Boost?
Boost couvre la plupart des coins de la programmation. Depuis le wiki de la balise boost sur Stack Overflow:
Il comprend des bibliothèques pour:
- Traitement de chaîne et de texte
- Conteneurs
- Les itérateurs
- Algorithmes
- Objets de fonction et programmation d'ordre supérieur
- Programmation générique
- Métaprogrammation des modèles
- Métaprogrammation des préprocesseurs
- Programmation concurrente
- Maths et Numériques
- Exactitude et test
- Structures de données
- Traitement d'image
- Entrée sortie
- Support inter-langues
- Mémoire
- Analyse
- Interfaces de programmation
- Divers
- Solutions de contournement du compilateur brisées
Versions
| Version | Nouvelles bibliothèques | Notes de version | Date de sortie |
|---|---|---|---|
| 1.10.0 | Remarques | 1999-12-14 | |
| 1.11.0 | Nombre rationnel | Remarques | 2000-02-01 |
| 1.12.0 | Remarques | 2000-02-23 | |
| 1.13.0 | Utilitaire, Type Traits, Traits d'appel, Paire compressée | Remarques | 2000-02-29 |
| 1.14.0 | Remarques | 2000-03-05 | |
| 1,15.0 | Nombre aléatoire | Remarques | 2000-06-17 |
| 1,16,0 | En-tête fonctionnel d'itérateur | Remarques | 2000-06-28 |
| 1,17,0 | Tableau | Remarques | 2000-08-03 |
| 1,18.0 | Graphique, expression régulière | Remarques | 2000-09-28 |
| 1.19.0 | Vérification du concept, Python, Static Assert, Concepts de carte de propriété | Remarques | 2000-12-10 |
| 1.20.0 | Conversion | Remarques | 2001-01-06 |
| 1,21.0 | Adaptateur itérateur, pool, test | Remarques | 2001-03-09 |
| 1.22.0 | CRC | Remarques | 2001-05-25 |
| 1.23.0 | Any, Fonction, Tokenizer, Fonctions Spéciales, Octonions, Quaternions | Remarques | 2001-07-06 |
| 1,24.0 | Tuple | Remarques | 2001-08-19 |
| 1,25.0 | Fil, lier | Remarques | 2001-10-01 |
| 1,26.0 | Facteur commun, préprocesseur | Remarques | 2001-11-30 |
| 1,27.0 | Remarques | 2002-02-05 | |
| 1,28.0 | Lambda, I / O State Saver | Remarques | 2002-05-15 |
| 1,29.0 | Date-Time, Dynamic Bitset, Format | Remarques | 2002-10-10 |
| 1,30.0 | Système de fichiers, facultatif, intervalle, MPL, esprit | Remarques | 2003-03-19 |
| 1.31.0 | enable_if, variante | Remarques | 2004-01-26 |
| 1.32.0 | Affectation, Minmax, Multi-Index, Conversion numérique, options de programme, plage, Sérialisation, String, Tribool | Remarques | 2004-11-19 |
| 1,33.0 | Iostream, Hash, Parameter, Conteneur de pointeur, vague | Remarques | 2005-08-11 |
| 1.34.0 | Foreach, Statechart, TR1, Typeof, Xpressive | Remarques | 2007-05-12 |
| 1,35.0 | Asio, Bimap, Tampon circulaire, Types de fonctions, Fusion, GIL, Interprocess, Intrusive, Fonctions mathématiques / spéciales, Distributions mathématiques / statistiques, MPI, système | Remarques | 2008-03-29 |
| 1.36.0 | Accumulateurs, exceptions, unités, non ordonnés | Remarques | 2008-08-14 |
| 1.37.0 | Proto | Remarques | 2008-11-03 |
| 1.38.0 | Poids mouche, ScopeExit, Swap | Remarques | 2009-02-08 |
| 1.39.0 | Signaux2 | Remarques | 2009-05-02 |
| 1,40.0 | Remarques | 2009-08-27 | |
| 1.41.0 | Arbre de propriété | Remarques | 2009-11-17 |
| 1,42.0 | Uuid | Remarques | 2010-02-02 |
| 1.43.0 | Fonctionnel / Facteur, Fonctionnel / Avance | Remarques | 2010-05-06 |
| 1,44.0 | Meta State Machine, polygone | Remarques | 2010-08-13 |
| 1.45.0 | Remarques | 2010-11-19 | |
| 1,46.0 | Icl | Remarques | 2011-02-21 |
| 1.46.1 | Remarques | 2011-03-12 | |
| 1,47.0 | Chrono, Géométrie, Phoenix, Ratio | Remarques | 2011-07-11 |
| 1.48.0 | Container, Locale, Move | Remarques | 2011-11-15 |
| 1,49.0 | Tas | Remarques | 2012-02-24 |
| 1,50.0 | Algorithme, Fonction / SurchargeFonction, LocalFunction, Utility / IdentityType | Remarques | 2012-06-28 |
| 1,51,0 | Le contexte | Remarques | 2012-08-20 |
| 1.52.0 | Remarques | 2012-11-05 | |
| 1.53.0 | Atomic, Coroutine, Lockfree, Multiprecision, Odeint | Remarques | 2013-02-04 |
| 1.54.0 | Journal, TTI, Type Effacement | Remarques | 2013-07-01 |
| 1,55,0 | Predef | Remarques | 2013-11-11 |
| 1.56.0 | Aligner, TypeIndex | Remarques | 2014-08-07 |
| 1,57,0 | Remarques | 2014-11-03 | |
| 1,58,0 | Endian, Sort | Remarques | 2015-04-17 |
| 1.59.0 | Convertir, Coroutine2 | Remarques | 2015-08-13 |
| 1.60.0 | VMD | Remarques | 2015-12-17 |
| 1,61.0 | Calcul, DLL, Hana, Metaparse | Remarques | 2016-05-13 |
| 1.62.0 | Fibre, QVM | Remarques | 2016-09-28 |
| 1.63.0 | Remarques | 2016-12-26 | |
| 1.64.0 | Processus | Remarques | 2017-04-19 |
Installation ou configuration
Voir Boost Getting Started .
La plupart des bibliothèques Boost sont uniquement en-tête, ce qui signifie qu'il n'y a rien à compiler ou à créer.
Assurez-vous d'obtenir la version la plus récente de Boost:
- Visitez www.boost.org
- Recherchez le téléchargement de la version actuelle. Actuellement, ces liens ici .
- Sélectionnez le fichier d'archive approprié à votre système d'exploitation et téléchargez-le.
Les bibliothèques en-tête uniquement peuvent alors être utilisées en incluant simplement les fichiers d'en-tête respectifs.
Quelques bibliothèques Boost nécessitent une compilation:
- Boost.Chrono
- Boost.Context
- Boost.Filesystem
- Boost.GraphParallel
- Boost.IOStreams
- Boost.Locale
- Boost.MPI
- Boost.ProgramOptions
- Boost.Python
- Boost.Regex
- Boost.Serialization
- Boost.Signals
- Boost.System
- Boost.Thread
- Boost.Timer
- Boost.Wave
En outre, les bibliothèques suivantes ont des composants qui doivent être compilés:
Boost.DateTime
Boost.Graph
Boost.Math
Boost.Random
Boost.Test
Boost.Exception
La source de Boost peut être obtenue via le lien de téléchargement sur le site , qui sera redirigé vers sa page SourceForge pour la dernière version ( 1.61.0 en juillet 2016). Cela peut être décompressé (ou non taré, etc.) dans un répertoire (tel que C: \ local \ boost_1_61_0). Ce répertoire peut ensuite être ajouté au chemin d'inclusion du logiciel que vous créez. Après cela, vous pouvez inclure les en-têtes Boost dans les fichiers C ++ avec #include <boost/header/path.hpp> .
La majorité des bibliothèques dans Boost sont uniquement en-tête. Si vous en avez seulement besoin, la distribution de la source ci-dessus est tout ce dont vous avez besoin. Toutefois, si vous devez utiliser l'une des bibliothèques nécessitant la création d'un fichier binaire compilé, vous en aurez également besoin.
Sur tous les systèmes, le moyen le plus fiable pour obtenir les binaires corrects consiste à les créer vous-même. Ces directions sont quelque peu différentes pour Windows ou Linux / Unix / POSIX .
Sous Windows avec Visual Studio, une alternative à la création des bibliothèques vous-même consiste à télécharger des bibliothèques prédéfinies à partir de la page SourceForge de Boost ( 1.61.0 à compter de juillet 2016). Sur cette page, vous pouvez sélectionner un programme d'installation qui installera une version pour une version Visual Studio spécifique ou le fichier 7-zip (boost_X_XX_X-bin-all-32-64.7z) contenant les fichiers binaires pour toutes les versions Visual Studio prises en charge. Chacune de ces options inclut les en-têtes / sources ainsi que les binaires, il n'est donc pas nécessaire d'avoir téléchargé la distribution source ci-dessus. Une fois que vous l'avez, extrayez / installez dans un répertoire (tel que C: \ local \ boost_1_61_0) et ajoutez ce répertoire à votre chemin d'inclusion, puis ajoutez le répertoire contenant les fichiers binaires correspondant à votre version de Visual Studio (par exemple, C: \ local \ boost_1_61_0 \ lib32-msvc-12.0 pour les projets Visual Studio 2013 32 bits) au chemin de la bibliothèque.
Installation et exécution de Boost (Cygwin)
(Niveau débutant; IDE: CLion)
Tout d'abord, installez boost à partir du miroir Cygwin: ouvrez l'exe installation, recherchez boost, installez les packages.
Après le boost est installé: il sera situé dans /usr/include/boost . C'est où tout est. Toutes les instructions #include seront un chemin du dossier boost, comme dans: #include <boost/archive/text_oarchive.hpp> .
Une fois que vous avez inclus les fichiers boost de votre choix dans vos fichiers .cpp , votre code ne sera toujours pas compilé dans l'IDE de votre choix tant que vous n'aurez pas lié les bibliothèques et demandé à cmake de rechercher votre code boost téléchargé .
Pour que cmake puisse rechercher votre code boost,
find_package(Boost 1.60.0 COMPONENTS components_you_want)
# for example:
find_package(Boost 1.60.0 COMPONENTS serialization)
Ensuite, incluez les répertoires: include_directories(${Boost_INCLUDE_DIRS})
Enfin, ajoutez votre exécutable et liez les bibliothèques:
add_executable(your_target ${SOURCE_FILES})
target_link_libraries(your_target ${Boost_LIBRARIES} -any_missing_boostlibs)
Avant de démarrer votre programme, évitez un vidage d'erreur en testant si un boost a été détecté avant d'inclure quelque chose ou d'exécuter votre code:
if (Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(YourTarget ${SOURCE_FILES})
target_link_libraries(your_target ${Boost_LIBRARIES} -missing_libs)
endif()
J'ai inclus -missing_libs car une erreur que vous pourriez rencontrer est que certaines librairies ou autres peuvent ne pas avoir été liées, et vous devez les ajouter manuellement, par exemple le lien que j'ai référencé précédemment.
Tous ensemble, un fichier CMakeLists.txt final pourrait ressembler à:
cmake_minimum_required(VERSION 3.7)
project(your_project)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp tmap.cpp tmap.h)
find_package(Boost 1.60.0 COMPONENTS serialization)
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(your_project ${SOURCE_FILES})
target_link_libraries(your_project ${Boost_LIBRARIES})
endif()