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

Boost.MultiIndex Documentation - Tutorial

Boost , , Boost.MultiIndex Documentation - Index

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

Boost.MultiIndex Tutorial



Contents

Rationale

Контейнеры STL спроектированы вокруг концепции, согласно которой каждый контейнер управляет собственным набором элементов, предоставляя доступ к ним способом, указанным типом контейнера: так, std::set поддерживает элементы, упорядоченные по заданному критерию сортировки, std::list позволяет свободно расположить элементы вдоль линейной последовательности и так далее.

Иногда возникает необходимость наличия различных интерфейсов доступа к одному и тому же базовому набору: например, некоторые данные могут быть отсортированы в соответствии с более чем одним предикатом сравнения, или двунаправленный список может извлечь выгоду из дополнительного логарифмического интерфейса поиска. В этих ситуациях программисты обычно прибегают к ручным композициям из разных контейнеров, решение, которое обычно включает в себя достаточное количество кода, предназначенного для сохранения синхронизации различных частей композиции. Повышаю. MultiIndex допускает спецификацию multi_index_containers, состоящего из одного или более индексов с различными интерфейсами к одному и тому же набору элементов. Полученные конструкции концептуально чище, чем ручные композиции, и часто работают намного лучше. Было принято важное дизайнерское решение о том, что индексы заданного multi_index_container задаются во время компиляции: это дает достаточно места для статической проверки типа и оптимизации кода.

Повышаю. MultiIndex черпает вдохновение из основных концепций индексации, возникающих в теории реляционных баз данных, хотя он не предназначен для обеспечения полноценной реляционной базы данных. multi_index_container легко интегрируется в дизайн STL-контейнера/алгоритма и обладает некоторыми дополнительными возможностями в отношении операций поиска и обновления элементов, которые являются полезными расширениями даже для одноиндексированных контейнеров.

diagram of a multi_index_container with three indices
Fig. 1: Diagram of a multi_index_container with three indices.

На рисунке выше изображен multi_index_container, состоящий из трех индексов: первые два представляют собой набороподобный интерфейс для элементов, отсортированных по форме и идентификатору, соответственно, в то время как последний индекс обеспечивает функциональность двунаправленного списка в духе std::list. Эти индексы действуют как «просмотры» для внутреннего набора элементов, но они не только обеспечивают доступ к набору для чтения: методы вставки / удаления также реализованы так же, как и методы std::sets или std::lists. Включение элемента через один данный индекс будет успешным только в том случае, если будут выполнены ограничения уникальности всех индексов.

Namespace

Все публичные виды бустов. MultiIndex находится в пространстве имен ::boost::multi_index. Кроме того, основной шаблон класса multi_index_container и глобальные функции get и project поднимаются до пространства имен ::boost с помощью объявлений using. Для краткости изложения фрагменты кода в документации пишутся так, как если бы действовали следующие декларации:

using namespace ::boost;
using namespace ::boost::multi_index;



Пересмотрено 21 февраля 2006 года

© Copyright 2003-2006 Joaquín M López Muñoz. Распространяется под лицензией Boost Software License, версия 1.0. (См. сопроводительный файл) LICENSE_1_0.txt или копировать на http://www.boost.org/LICENSE_1_0.txt

Статья Boost.MultiIndex Documentation - Tutorial раздела Boost.MultiIndex Documentation - Index может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Boost.MultiIndex Documentation - Index ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 22:14:09/0.0067989826202393/0