Boost.Bimap is intuitive because it is based on the standard template library.
New concepts are however presented to extend the standard maps to bidirectional
maps. The first step is to gain a firm grasp of the bimap framework. The
first section (Discovering
the bimap framework) aims to explain this.
Boost.Bimap offers much more than just a one-to-one ordered unique bidirectional
map. It is possible to control the collection type of each side of the
relationship that the bimap represents, giving one-to-many containers,
hashed bidirectional containers and others that may be more suitable to
the the task at hand. The second section (Controlling
collection types) explains how to instantiate a bimap with different
The section Useful
functions provides information about functions of a bimap that are
not found in the STL.
The types of a bimap can be tagged so that each side is accessible by something
closer to the problem than left and right. This leads to more readable,
self-documenting code. The fourth section (Bimaps
with user defined names) shows how to use this feature.
The bimap mapping framework allows to disable a view of a bimap, including
the standard mapping containers as a particular case. The section Unconstrained Sets
explains how they work.