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

The MPL Reference Manual: map
Front Page / Sequences / Classes / map

map

Description

map is a variadic, associative, extensible sequence of type pairs that supports constant-time insertion and removal of elements, and testing for membership. A map may contain at most one element for each key.

Header

Sequence form Header
Variadic #include <boost/mpl/map.hpp>
Numbered #include n.hpp>

Expression semantics

In the following table and subsequent specifications, m is an instance of map, pos is an iterator into m, x and p1,p2,... pn are pairs, and k is an arbitrary type.

Expression Semantics
map<p1,p2,... pn>
mapn<p1,p2,... pn>
map of elements p1,p2,... pn; see Variadic Sequence.
map<p1,p2,... pn>::type
mapn<p1,p2,... pn>::type
Identical to mapn<p1,p2,... pn>; see Variadic Sequence.
begin::type An iterator pointing to the beginning of m; see Associative Sequence.
end::type An iterator pointing to the end of m; see Associative Sequence.
size::type The size of m; see Associative Sequence.
empty::type A boolean Integral Constant c such that c::value == true if and only if m is empty; see Associative Sequence.
front::type The first element in m; see Associative Sequence.
has_key::type Queries the presence of elements with the key k in m; see Associative Sequence.
count::type The number of elements with the key k in m; see Associative Sequence.
order::type A unique unsigned Integral Constant associated with the key k in m; see Associative Sequence.
at::type
at::type
The element associated with the key k in m; see Associative Sequence.
key_type::type Identical to x::first; see Associative Sequence.
value_type::type Identical to x::second; see Associative Sequence.
insert::type

A new map, t, equivalent to m except that

at< t, key_type::type >::type

is identical to value_type::type.

insert::type Equivalent to insert::type; pos is ignored.
erase_key::type A new map, t, equivalent to m except that has_key k>::value == false.
erase::type Equivalent to erase deref::type >::type.
clear::type An empty map; see clear.

Example

typedef map<
      pair
    , pair
    , pair<long_<5>,char[17]>
    , pair
    > m;

BOOST_MPL_ASSERT_RELATION( size::value, ==, 4 );
BOOST_MPL_ASSERT_NOT(( empty ));

BOOST_MPL_ASSERT(( is_same< at::type, unsigned > ));
BOOST_MPL_ASSERT(( is_same< atlong_<5> >::type, char[17] > ));
BOOST_MPL_ASSERT(( is_same< at::type, bool > ));
BOOST_MPL_ASSERT(( is_same< at::type, void_ > ));