lexical_cast - преобразование любых типов в строки и из строк в любой тип
(подобно sprintf() и
atoi() из библиотеки C).Документация.Пример.
format - позволяет применять привычную для программистов на C форматную строку из
printf() в потоковых операторах с некоторыми новыми возможностями.
Пример.
Кстати говоря, семейство функций
printf(), несмотря на все свои недостатки
(отсутствие проверки типов аргументов на стеке и невозможность расширения
для новых типов) продолжает интенсивно использоваться благодаря очень
компактному форматированию результатов и наглядности исходного кода.
В .NET Framework,
несмотря на всю продвинутость,
также не смогли отказаться от парадигмы
printf() -
схема работы
Console::WriteLine
очень напоминает printf,
хотя и вводит для безопасности контроль типов аргументов.
В библиотеке
LEM есть класс,
который делает все, что умеет делать
printf, и плюс к этому содержит массу
дополнительных флагов форматирования (выравнивание полей,
задание цвета при выводе на консоль) - см. описание
OFormatter.
regex - мощная библиотека регулярных выражений.
Пример.
Еще пример. Документация.
В поисковом движке FAIND реализована
поддержка расширенных регулярных выражений,
в которых можно работать с грамматическими свойствами слов (приводить
к базовым формам, работать с грамматическими
кванторами).
tokenizer - разбиение строки на части по разделителям
(лексер).
Пример.
Библиотека C++ LEM
содержит шаблонный класс
BaseLexer<>, который
выполняет разбивку текста на лексемы и их токенизацию,
а также целый набор классов (Iridium),
которые реализуют полный препроцессор C.
Полноценное
применение средств замечательной библиотеки BOOST требует профессионального владения
тонкостями языка C++
math - некоторые реализации теоретической математики в виде
шаблонов. Реализация многих численных методов есть
в математическом разделе библиотеки
LEM.
integer - некоторые операции с целыми числами реализованные
в виде шаблонов, определения типов из стандарта С (int_least8_t,
uint8_t и пр.),
работа с битовыми масками и пр.
Документация. Примеры.
math/common_factor - нахождение наибольшего общего делителя (GCD)
и наименьшего общего множителя (LCM) для двух чисел.
Реализации как времени исполнения, так и компиляции.
math/octonion - реализация октонионов
math/quaterion - реализация квартерионов
math/special_functions - некоторые специальные математические
функции типа гиперболического синуса. Требуются для реализации октонионов и
квартарионов. В математическом разделе библиотеки
LEM есть набор численных методов вычисления многих
специальных функций, а также тестовые программы.
random - генераторы псевдослучайных чисел и средства для
получения различных распределений вероятности.
Документация.
Много различных генераторов псевдослучайных чисел и тестовых программ
для проверки их качества реализовано в
математическом разделе библиотеки LEM.
rational - реализация рациональных чисел
(дробей).
Документация. Пример.
uBLAS - основная линейная алгебра для плотных, упакованных и
разряженных матриц. Некоторые численные алгоритмы
линейной алгебры реализованы в математическом разделе библиотеки LEM.
any - безопасный общий контейнер для единичного значения любого типа.
compressed_pair - то же, что и std::pair<>, но в случае, если один
из аргументов пустой класс, то оптимизирует пару по размеру.Документация.
tuple - реализация функций, возвращающих несколько значений.
Документация.
variant -
контейнер для хранения единственного объекта произвольного типа.Документация.
Ввод/вывод
format - описано выше
io state savers
Python
python
Работа с памятью
pool - управление памятью в виде пулов
smart_ptr - "Умные" указатели.
scoped_ptr - не копируемые "автоматические" указатели.
Подобно auto_ptr из стандартной библиотеки, но
operator=() не
реализован.
scoped_array - ни auto_ptr, ни
scoped_ptr нельзя использовать
для массивов. scoped_array - это адаптация
scoped_ptr для массивов
shared_ptr - указатели с подсчетом ссылок
shared_array - реализация shared_ptr для массивов
weak_ptr - реализация "ослабленного" shared_ptr. Необходим для
для разрыва циклических связей. Скажем в main() определен
shared_ptr на
объект A в котором явно или не явно присутствует
shared_ptr на себя самого.
Счетчик ссылок будет равен 2. При удалении первого
shared_ptr счетчик
ссылок на объект А будет уменьшен до 1 и объект никогда не удалится! Для
решения этой проблемы и был создан week_ptr.
utility - определяет базовый класс
noncopyable для некопируемых классов,
а также шаблоны next() и
prior() для итераторов,
checked_delete() и checked_array_delete() для удаления указателя и указателя на массив с проверкой
типов на этапе компиляции, шаблон addressof() возвращающий адрес объекта.
Шаблон tie() создан для более удобной замены
std::make_pair(). А также содержит
шаблоны для реализации идиомы Base-from-Member (см. ниже).
Документация.
Прочее
filesystem - работа с файловой системой,
путями, именами файлов.
Документация. См. пример
Base-from-Member идиома необходима для инициализации базового класса
членом текущего класса. Нет "штатных" способов сделать это,
поскольку текущий
класс еще не создан. Для реализации этого необходимо разбивать текущий класс на
два. Boost предоставляет шаблон для сокрытия этого.Документация.
conversion - помимо
lexical_cast<>,
содержит
polymorphic_cast<> и
polymorphic_downcast<> для безопасного полиморфного преобразования типов, а так же
numeric_cast<> для безопасного преобразования числовых типов (например из
double в
short).Документация.