...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` 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.

Sequence form | Header |
---|---|

Variadic | #include <boost/mpl/map.hpp> |

Numbered | #include <boost/mpl/map/mapn.hpp> |

In the following table and subsequent specifications, `m` is an instance of `map`,
`pos` is an iterator into `m`, `x` and *p*_{1},*p*_{2},... *p*_{n} are `pair`s, and `k` is an arbitrary type.

Expression | Semantics |
---|---|

map< |
map of elements p_{1},p_{2},... p_{n}; see
Variadic Sequence. |

map< |
Identical to mapn<p_{1},p_{2},... p_{n}>;
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 at< t, key_type<m,x>::type >::type is identical to |

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. |

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_ > ));