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

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 <boost/mpl/map/mapn.hpp>

Model of

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<m>::type An iterator pointing to the beginning of m; see Associative Sequence.
end<m>::type An iterator pointing to the end of m; see Associative Sequence.
size<m>::type The size of m; see Associative Sequence.
empty<m>::type A boolean Integral Constant c such that c::value == true if and only if m is empty; see Associative Sequence.
front<m>::type The first element in m; see Associative Sequence.
has_key<m,k>::type Queries the presence of elements with the key k in m; see Associative Sequence.
count<m,k>::type The number of elements with the key k in m; see Associative Sequence.
order<m,k>::type A unique unsigned Integral Constant associated with the key k in m; see Associative Sequence.
at<m,k>::type
at<m,k,default>::type
The element associated with the key k in m; see Associative Sequence.
key_type<m,x>::type Identical to x::first; see Associative Sequence.
value_type<m,x>::type Identical to x::second; see Associative Sequence.
insert<m,x>::type

A new map, t, equivalent to m except that

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

is identical to value_type<m,x>::type.

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

Example

typedef map<
      pair<int,unsigned>
    , pair<char,unsigned char>
    , pair<long_<5>,char[17]>
    , pair<int[42],bool>
    > m;

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

BOOST_MPL_ASSERT(( is_same< at<m,int>::type, unsigned > ));
BOOST_MPL_ASSERT(( is_same< at<m,long_<5> >::type, char[17] > ));
BOOST_MPL_ASSERT(( is_same< at<m,int[42]>::type, bool > ));
BOOST_MPL_ASSERT(( is_same< at<m,long>::type, void_ > ));

See also

Sequences, Variadic Sequence, Associative Sequence, Extensible Associative Sequence, set, vector