Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Design Notes

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 17. Boost.Intrusive

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

При проектированииBoost.Были приняты во внимание следующие рекомендации:

Навязчивыйдолжен быть ценным инструментом в чувствительных к производительности средах, и, следуя этому руководству,Boost.был разработан, чтобы предложить хорошо известные гарантии сложности. Кроме того, некоторые опции, такие как дополнительное постоянное время, были разработаны для обеспечения более быстрых гарантий сложности в некоторых функциях, таких как<slist::splice>.

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

Навязчивыедолжны быть полезны в условиях ограниченного пространства и следовать этому руководствуBoost.Intrusiveразделяет алгоритмы узлов и интрузивные контейнеры, чтобы избежать инстанцирования алгоритмов узлов для каждого типа пользователя. Например, один класс красно-черных алгоритмов будет реализован для реализации всех наборов и многосетовых контейнеров с использованием необработанных указателей. Таким образом,Boost.Intrusiveстремится избежать каких-либо накладных расходов на код, связанных с шаблонами.

Кроме того,Boost.Intrusiveреализует некоторые улучшения размера: например, красно-черные деревья встраивают цветной бит в родительский указатель нижний бит, если узлы выровнены на два байта. Возможность отказаться от операций с постоянным размером может уменьшить размер контейнера, и эта дополнительная оптимизация размера заметна, когда контейнер пуст или содержит несколько значений.

Навязчивыйможет быть основным строительным блоком для создания более сложных контейнеров, и этот потенциал мотивировал многие дизайнерские решения. Например, возможность иметь более одного крючка на тип пользователя открывает возможность реализации мультииндексных контейнеров поверхBoost.Intrusive.

Boost.Intrusiveконтейнеры реализуют расширенные функции, принимая функциональные объекты в качестве аргументов<clone_from>,<erase_and_dispose>,<insert_check>и т.д. Эти функции пригодятся при реализации неинтрузивных контейнеров (например, STL-подобных контейнеров) поверх интрузивных контейнеров.

Boost.Intrusiveпредлагает широкий спектр контейнеров, но также позволяет создавать пользовательские контейнеры с повторным использованием элементовBoost.Intrusive. Программист может использовать алгоритмы узлов напрямую или создавать специальные крючки, которые используют среду приложения.

Например, программист может настраивать частиBoost.Intrusiveдля управления старыми структурами данных, определение которых не может быть изменено.


PrevUpHomeNext

Статья Design Notes раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 17. Boost.Intrusive может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Chapter 17. Boost.Intrusive ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 17:37:00/0.0086870193481445/1