boost :: pool_allocator нужны восемь статических библиотек?

Я попытался добавить в свой проект довольно ограниченную функциональность из библиотеки Boost, а именно выделить память для небольших объектов из пула с помощью класса ‘pool_allocator’, и обнаружил, что мне нужно добавить в проект зависимости от 4 отладочных статических библиотек. файлы и до 4 выпуска статических файлов библиотеки. То есть Для одной строки нужно 8 зависимостей библиотечного файла:

boost::container::vector<int, boost::pool_allocator<int> > v;

Есть ли способ использовать эти классы без ссылки на статические библиотеки? (Может быть, определенная комбинация параметров шаблона?)

0

Решение

Все, что я читал о буст-пуле, это: не используйте его вообще. Библиотека довольно старая (в boost 1.54 все файлы имеют авторские права 2000 и 2001, кроме pool_alloc.hpp, который был отредактирован в 2010 году). Вы можете посмотреть Вот на вопрос о производительности (ищите ответ Джеймса Канзе). Если вы хотите использовать только boost, я бы предложил использовать другую библиотеку. Если вам нужен собственный распределитель, сделайте тесты.

Редактировать:

От Документы для бассейнов:

В общем, используйте Пулы, когда вам нужен более эффективный способ необычного управления памятью.

Итак, что такое необычное управление памятью? Удовлетворяет ли это вашу особую потребность в памяти?
Андрей Александреску написал в «Современном C ++ Design» о распределении памяти и что могут быть очень разные требования в зависимости от распределения а также шаблоны освобождения. Но в соответствии с этим бумага он не уверен, что это была очень хорошая глава.

Так что для меня последний вопрос, является ли пул лучше, чем std :: allocator для управления памятью проблем? Вы должны испортить это. Даже если в пуле реализована небольшая логика, в вашей реализации могут быть более эффективные алгоритмы управления памятью. Кстати одна из ошибок пула «Boost pool library это не заголовок только как заявлено в документации».

3

Другие решения

Определите файлы, запрашиваемые из boost, и добавьте их в свой проект по отдельности, или добавьте .cpp в свой проект, который # включает в себя требуемые .cpp. (Не очень рекомендуется)

или же

сгенерируйте ваши файлы проекта с помощью скрипта, чтобы добавить такие зависимости легко. Настройка это боль, но иметь это здорово

0