MISC-MIndexSContainers
Давайте будем общими, построим рамки, описываем мир единым образом...
Нет!, лучше быть специализированным, проектировать простые в использовании компоненты, предлагать подключаемые и воспроизводимые объекты...
Почему бы не воспользоваться лучшим из обоих миров?

С Бустом. Бимап, вы можете построить ассоциативные контейнеры, в которых оба типа могут быть использованы в качестве ключа. В Boost есть библиотека, которая уже позволяет создавать такой контейнер: Boost.MultiIndex. Он предлагает большую гибкость и позволяет создавать практически любой контейнер, о котором вы могли бы мечтать. Рамки очень чистые. Вы можете прочитать учебник этой библиотеки, чтобы узнать о силе, которая была достигнута.
Но общность стоит дорого: интерфейс, который дает результаты, может быть не лучшим для каждой специализации. Люди могут в конечном итоге обернуть контейнер B.MI в свой класс каждый раз, когда они хотят использовать его в качестве двунаправленной карты. Повышаю. Bimap использует более узкую область для создания лучшего интерфейса для двунаправленных карт. Нет кривой обучения, если вы знаете, как использовать стандартные контейнеры. Большие усилия были приложены к отображению схемы именования STL в Boost. Бимап. Библиотека предназначена для соответствия общим контейнерам STL.
Повышаю. MultiIndex является, по сути, ядром бимап-контейнера.
Тем не менее, буст. Bimap не стремится решить каждую проблему с помощью двух индексированных типов. Существуют некоторые проблемы, которые лучше смоделированы с помощью Boost. MultiIndex.
Вы также можете прочитатьДополнительную информациюдля получения дополнительной информации об отношении этих двух библиотек.