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

Additional Features

Boost , Chapter 1. Boost.Bimap , Rationale

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
N-1, N-N, hashed maps

Это очень интересный момент дизайна. Структура, введенная в std::set theory, позволяет управлять различными ограничениями с помощью очень простого и концептуального подхода. Легко как запоминать, так и учиться. Идея здесь заключается в том, чтобы позволить пользователю непосредственно указать тип сбора каждого ключа. Чтобы реализовать эту функцию, мы должны решить две проблемы:

  • Типы индексов ядра multi_index_container теперь зависят от типа сбора, используемого для каждого ключа.
  • Виды карт теперь меняют свою семантику в соответствии с выбранным типом коллекции.

Повышаю. Бимап в значительной степени полагается на Boost. MPL для реализации всех метапрограмм, необходимых для работы этой структуры. По умолчанию, если пользователь не указывает тип набора, используется тип std::set.

bimap.structures

Collection type of relation constraints

Ограничения представления набора бимап являются еще одной очень важной особенностью. В общем, Буст. Пользователи Bimap будут основывать тип просмотра на одном из двух типов набора ключей. Однако может быть полезно дать этому набору другие ограничения или просто заказать его по-другому. По умолчанию, Boost. Bimap основывает тип отношений сбора на левом типе сбора, но пользователь может выбрать между:

  • left_based
  • right_based
  • set_of_relation<>
  • multiset_of_relation<>
  • unordered_set_of_relation<>
  • unordered_multiset_of_relation<>
  • list_of
  • вектор

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

Tagged

Идея использования тегов вместо идиомы member_at::side очень привлекательна, поскольку код, который ее использует, более читаем. Единственная цена – это время компиляции. boost/bimap/tagged - это реализация неинвазивной помеченной идиомы. Класс relation построен таким образом, что даже когда пользователь использует теги, идиома member_at::side продолжает работать. Это хорошо, так как пользователь может начать пометку еще до завершения кодирования алгоритма, а непомеченный код продолжает работать. Разработка становится немного сложнее, когда включаются пользовательские теги, но есть много удобных метафункций, определенных в tagged. Идиома, которая помогает держать вещи достаточно простыми.

tagged


PrevUpHomeNext

Статья Additional Features раздела Chapter 1. Boost.Bimap Rationale может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Rationale ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 08:20:21/0.0061120986938477/0