boost учебник
Начало работы с повышением
Поиск…
замечания
Что такое Boost?
Boost - это большая коллекция бесплатных высококачественных библиотек C ++, которые охватывают широкий круг тем. Он часто считается «второй стандартной библиотекой» для C ++, поскольку многие распространенные проблемы на C ++ решаются с помощью Boost.
От boost.org :
Boost предоставляет бесплатные рецензируемые портативные исходные библиотеки C ++.
Мы подчеркиваем библиотеки, которые хорошо работают со стандартной библиотекой C ++. Библиотеки Boost предназначены для широкого использования и могут использоваться в широком спектре приложений. Лицензия Boost поощряет как коммерческое, так и некоммерческое использование.
Некоторые библиотеки Повышения даже пробрались в стандартную библиотеку C ++ 11, а также некоторые другие, такие как Boost.Optional и Boost.Variant , будут частью C ++ 17.
Что может сделать Boost?
Boost охватывает большинство углов программирования. Из вики-метки boost здесь в Stack Overflow:
Он включает библиотеки для:
- Строка и обработка текста
- Контейнеры
- итераторы
- Алгоритмы
- Функциональные объекты и программирование более высокого порядка
- Общее программирование
- Шаблоны метапрограммирования
- Метапрограммирование препроцессора
- Параллельное программирование
- Математика и численность
- Правильность и тестирование
- Структуры данных
- Обработка изображения
- Ввод, вывод
- Межязыковая поддержка
- объем памяти
- анализ
- Интерфейсы программирования
- Разнообразный
- Обходные компиляторы
Версии
| Версия | Новые библиотеки | Примечания к выпуску | Дата выхода |
|---|---|---|---|
| 1.10.0 | заметки | 1999-12-14 | |
| 1.11.0 | Рациональное число | заметки | 2000-02-01 |
| 1.12.0 | заметки | 2000-02-23 | |
| 1.13.0 | Утилита, черты типа, свойства вызова, сжатая пара | заметки | 2000-02-29 |
| 1.14.0 | заметки | 2000-03-05 | |
| 1.15.0 | Случайный номер | заметки | 2000-06-17 |
| 1.16.0 | Функциональный, заголовок итератора | заметки | 2000-06-28 |
| 1.17.0 | массив | заметки | 2000-08-03 |
| 1.18.0 | График, регулярное выражение | заметки | 2000-09-28 |
| 1.19.0 | Concept Check, Python, Static Assert, Концепции карты недвижимости | заметки | 2000-12-10 |
| 1.20.0 | преобразование | заметки | 2001-01-06 |
| 1.21.0 | Адаптер итератора, пул, тест | заметки | 2001-03-09 |
| 1.22.0 | CRC | заметки | 2001-05-25 |
| 1.23.0 | Любой, функция, токенизатор, Специальные функции, октонионы, кватернионы | заметки | 2001-07-06 |
| 1.24.0 | Кортеж | заметки | 2001-08-19 |
| 1.25.0 | Тема, Связывание | заметки | 2001-10-01 |
| 1.26.0 | Общий коэффициент, препроцессор | заметки | 2001-11-30 |
| 1.27.0 | заметки | 2002-02-05 | |
| 1.28.0 | Lambda, I / O State Saver | заметки | 2002-05-15 |
| 1.29.0 | Дата-время, динамический бикет, формат | заметки | 2002-10-10 |
| 1.30.0 | Файловая система, Дополнительно, Интервал, MPL, Дух | заметки | 2003-03-19 |
| 1.31.0 | enable_if, Вариант | заметки | 2004-01-26 |
| версий 1.32.0 | Назначение, Minmax, Multi-Index, Цифровое преобразование, параметры программы, диапазон, Сериализация, String, Tribool | заметки | 2004-11-19 |
| 1.33.0 | Iostream, Hash, Параметр, Контейнер указателей, волна | заметки | 2005-08-11 |
| 1.34.0 | Foreach, Statechart, TR1, Typeof, Xpressive | заметки | 2007-05-12 |
| 1.35.0 | Asio, Bimap, круговой буфер, типы функций, Fusion, GIL, Interprocess, Intrusive, Математические / специальные функции, Математические / статистические распределения, MPI, система | заметки | 2008-03-29 |
| 1.36.0 | Аккумуляторы, исключение, блоки, неупорядоченные | заметки | 2008-08-14 |
| 1.37.0 | Прото | заметки | 2008-11-03 |
| 1.38.0 | Flyweight, ScopeExit, Swap | заметки | 2009-02-08 |
| 1.39.0 | Signals2 | заметки | 2009-05-02 |
| 1.40.0 | заметки | 2009-08-27 | |
| 1.41.0 | Дерево свойств | заметки | 2009-11-17 |
| 1.42.0 | UUID | заметки | 2010-02-02 |
| 1.43.0 | Функциональный / Фактор, Функциональный / Вперед | заметки | 2010-05-06 |
| 1.44.0 | Мета-автомат, многоугольник | заметки | 2010-08-13 |
| 1.45.0 | заметки | 2010-11-19 | |
| 1.46.0 | Icl | заметки | 2011-02-21 |
| 1.46.1 | заметки | 2011-03-12 | |
| 1.47.0 | Хроно, Геометрия, Феникс, Соотношение | заметки | 2011-07-11 |
| 1.48.0 | Контейнер, локаль, перемещение | заметки | 2011-11-15 |
| 1.49.0 | отвал | заметки | 2012-02-24 |
| 1.50.0 | Алгоритм, Функциональная / Перегруженная функция, LocalFunction, Utility / IdentityType | заметки | 2012-06-28 |
| 1.51.0 | контекст | заметки | 2012-08-20 |
| 1.52.0 | заметки | 2012-11-05 | |
| 1.53.0 | Atomic, Coroutine, Lockfree, Multiprecision, Odeint | заметки | 2013-02-04 |
| 1.54.0 | Журнал, TTI, Тип Erasure | заметки | 2013-07-01 |
| 1.55.0 | Predef | заметки | 2013-11-11 |
| 1.56.0 | Выравнивание, TypeIndex | заметки | 2014-08-07 |
| 1.57.0 | заметки | 2014-11-03 | |
| 1.58.0 | Endian, Сортировать | заметки | 2015-04-17 |
| 1.59.0 | Конвертировать, Coroutine2 | заметки | 2015-08-13 |
| 1.60.0 | VMD | заметки | 2015-12-17 |
| 1.61.0 | Вычислить, DLL, Hana, Metaparse | заметки | 2016-05-13 |
| 1.62.0 | Волокно, QVM | заметки | 2016-09-28 |
| 1.63.0 | заметки | 2016-12-26 | |
| 1.64.0 | Процесс | заметки | 2017-04-19 |
Установка или настройка
См. « Начало работы с Boost» .
Большинство библиотек Boost имеют только заголовок, что означает, что вам нечего компилировать или ссылаться.
Убедитесь, что вы получаете самую последнюю версию Boost:
- Посетите сайт www.boost.org
- Найдите текущую версию релиза. В настоящее время это ссылки здесь .
- Выберите соответствующий архивный файл для вашей операционной системы и загрузите.
Библиотеки только для заголовков затем могут быть использованы простым включением соответствующих файлов заголовков.
Для нескольких библиотек Boost требуется компиляция:
- 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
Кроме того, следующие библиотеки содержат компоненты, которые необходимо скомпилировать:
Boost.DateTime
Boost.Graph
Boost.Math
Boost.Random
Boost.Test
Boost.Exception
Источник для Boost можно получить через ссылку загрузки на сайте , которая будет перенаправляться на его страницу SourceForge для последней версии ( 1.61.0 по состоянию на июль 2016 года). Это можно распаковать (или удалить, и т.д.) в каталог (например, C: \ local \ boost_1_61_0). Затем этот каталог можно добавить к пути включения для программного обеспечения, которое вы создаете. После этого вы можете включить заголовки Boost в файлы C ++ с #include <boost/header/path.hpp> .
Большинство библиотек в Boost имеют только заголовок. Если вам нужны только эти, то это все, что необходимо. Однако, если вам нужно использовать одну из библиотек, для которой требуется скомпилированный двоичный файл, вам также понадобится.
В любой системе наиболее надежным способом получения правильных двоичных файлов является их собственное построение. Эти направления несколько отличаются для Windows или Linux / Unix / POSIX .
В Windows с Visual Studio альтернативой созданию библиотек является загрузка предварительно построенных библиотек с страницы SourceForge от Boost ( 1.61.0 по состоянию на июль 2016 года). На этой странице вы можете выбрать установщик, который установит версию для конкретной сборки Visual Studio или 7-zip-файла (boost_X_XX_X-bin-all-32-64.7z), который содержит двоичные файлы для всех поддерживаемых версий Visual Studio. Любой из этих параметров включает в себя исходники / заголовки, а также двоичные файлы, поэтому нет необходимости загружать исходный дистрибутив выше. После этого извлеките / установите в каталог (например, C: \ local \ boost_1_61_0) и добавьте этот каталог в свой путь include, затем добавьте каталог, содержащий двоичные файлы, соответствующие вашей версии Visual Studio (например, C: \ local \ boost_1_61_0 \ lib32-msvc-12.0 для 32-битных проектов Visual Studio 2013) в путь к библиотеке.
Установка и запуск Boost (Cygwin)
(Уровень начального уровня, IDE: CLion)
Во-первых, установите boost из зеркала Cygwin: откройте установку exe, найдите повышение, установите пакеты.
После установки boost: он будет расположен в /usr/include/boost . Здесь все и есть. Все операторы #include будут путь из папки boost, как в: #include <boost/archive/text_oarchive.hpp> .
После того, как вы включите файлы повышения по вашему выбору в ваши .cpp файлы, ваш код все равно не будет компилироваться в вашей IDE по выбору, пока вы не свяжете библиотеки и не скажете cmake для поиска загруженного кода повышения .
Чтобы получить cmake для поиска кода повышения,
find_package(Boost 1.60.0 COMPONENTS components_you_want)
# for example:
find_package(Boost 1.60.0 COMPONENTS serialization)
Затем include_directories(${Boost_INCLUDE_DIRS}) каталоги: include_directories(${Boost_INCLUDE_DIRS})
Наконец, добавьте исполняемый файл и свяжите библиотеки:
add_executable(your_target ${SOURCE_FILES})
target_link_libraries(your_target ${Boost_LIBRARIES} -any_missing_boostlibs)
Перед запуском вашей программы избегайте дампа ошибок путем тестирования, чтобы узнать, был ли найден boost, прежде чем включать что-либо или запустить ваш код:
if (Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(YourTarget ${SOURCE_FILES})
target_link_libraries(your_target ${Boost_LIBRARIES} -missing_libs)
endif()
Я включил -missing_libs потому что ошибка, с которой вы можете столкнуться, заключается в том, что некоторая дополнительная библиотека или другая, возможно, не были связаны, и вы должны вручную добавить ее - например, ссылку, на которую я ссылался ранее.
Все вместе, окончательный файл CMakeLists.txt может выглядеть примерно так:
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()