Boost недавно стал доступен для проекта, над которым я работаю, и у меня нет особого опыта работы с ним. Библиотека имеет так много частей и функций, что трудно понять, с чего начать ее изучение - тем более, что я буду пытаться изучать ее при создании производственного кода (поэтому она не может сильно меня затормозить).
Я был бы очень признателен, если бы кто-нибудь мог перечислить от 3 до 5 функций, которые очень полезны в общем, повседневного программирования и указать, почему они полезны. Тогда я могу начать изучать их и использовать их - это, по крайней мере, даст мне точку опоры в библиотеке и удобное место, чтобы начать изучать его / применять его :)
Заранее спасибо!
Ответы:
Если вы используете компилятор до TR1, то умные указатели
Если ваш компилятор уже имеет умные указатели, используйте их.
Причина очевидна, C ++ без умных указателей в принципе не является C ++
Расширенные библиотеки ptr_contaier.
Все контейнеры STL заново реализованы специально для хранения указателей. Контейнеры не только становятся владельцами указателей, поэтому, когда контейнер уничтожается, он автоматически уничтожает все указатели. НО он также обеспечивает доступ к элементам в виде обычных ссылок на объекты (не указателей), что позволяет легко использовать объекты в стандартных алгоритмах без функторов-обёрток.
Повышение лямбда-библиотеки. (см. комментарий ниже)
Функторы и связующие STL подходят для простых вещей. Но boost :: lambda сделал следующий шаг и намного упростил использование стандартных алгоритмов.
Boost :: любой и Boost :: вариант
Когда вам нужно держать объекты, не желая знать их точный тип.
мульти Индекс Контейнеры
Контейнеры, которые позволяют множеству различных способов доступа к элементам.
Прошли те времена, когда у вас есть вектор объектов и отдельная карта для быстрого поиска вектора. Это сокращает шаблон, который нужно написать, чтобы сохранить два контейнера при вставке / удалении элементов в контейнеры.
повышение :: lexical_cast
Вероятно, наименее полезным в реальной жизни, но с ним очень весело играть, это boost :: lexical_cast. Он преобразует любой объект в / из строки (при условии, что для этого типа определены соответствующие операторы << и >>). Очень полезно для сброса сообщений об ошибках при отладке.
источник
Повышение не является ни рамкой, ни библиотекой. Это проверенная библиотекой коллекция с проверкой качества. Вы не изучаете Boost. Библиотеки индивидуальны - когда вам что-то нужно, вы проверяете, находится ли оно в Boost, если оно есть, то вы изучаете эту библиотеку. Вот и все. Вы не можете понять, что такое Boost :: Option.
источник
Boost - это коллекции библиотек. В следующий раз, когда вы создадите код ката, выберите библиотеку в Boost, которая, по вашему мнению, может вам помочь, и используйте ее. Документация очень хорошая, и у вас не должно быть проблем с подбором простого использования. Более сложные придут, когда вы попытаетесь сделать более умные вещи.
Пример: потокобезопасный синглтон с boost :: thread call_once.
Пример: чтение файла конфигурации ключ: значение с помощью токенизатора.
источник