1<?xml version="1.0" encoding="utf-8" ?> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 4<head> 5<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 6<meta name="generator" content="Docutils 0.7: http://docutils.sourceforge.net/" /> 7<title>The MPL Reference Manual: map</title> 8<link rel="stylesheet" href="../style.css" type="text/css" /> 9</head> 10<body class="docframe refmanual"> 11<table class="header"><tr class="header"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./set.html" class="navigation-link">Prev</a> <a href="./range-c.html" class="navigation-link">Next</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./set.html" class="navigation-link">Back</a> <a href="./range-c.html" class="navigation-link">Along</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./classes.html" class="navigation-link">Up</a> <a href="../refmanual.html" class="navigation-link">Home</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./refmanual_toc.html" class="navigation-link">Full TOC</a></span></td> 12<td class="header-group page-location"><a href="../refmanual.html" class="navigation-link">Front Page</a> / <a href="./sequences.html" class="navigation-link">Sequences</a> / <a href="./classes.html" class="navigation-link">Classes</a> / <a href="./map.html" class="navigation-link">map</a></td> 13</tr></table><div class="header-separator"></div> 14<div class="section" id="map"> 15<h1><a class="toc-backref" href="./classes.html#id1410">map</a></h1> 16<div class="section" id="id80"> 17<h3><a class="subsection-title" href="#description" name="description">Description</a></h3> 18<p><tt class="literal"><span class="pre"><a href="./map.html" class="identifier">map</a></span></tt> is a <a class="reference internal" href="./variadic-sequence.html">variadic</a>, <a class="reference internal" href="./associative-sequence.html">associative</a>, <a class="reference internal" href="./extensible-associative-sequence.html">extensible</a> sequence of type pairs that 19supports constant-time insertion and removal of elements, and testing for membership. 20A <tt class="literal"><span class="pre"><a href="./map.html" class="identifier">map</a></span></tt> may contain at most one element for each key.</p> 21</div> 22<div class="section" id="id83"> 23<h3><a class="subsection-title" href="#header" name="header">Header</a></h3> 24<table border="1" class="docutils table"> 25<colgroup> 26<col width="26%" /> 27<col width="74%" /> 28</colgroup> 29<thead valign="bottom"> 30<tr><th class="head">Sequence form</th> 31<th class="head">Header</th> 32</tr> 33</thead> 34<tbody valign="top"> 35<tr><td>Variadic</td> 36<td><tt class="literal"><span class="pre">#include <<a href="../../../../boost/mpl/map.hpp" class="header">boost/mpl/map.hpp</a>></span></tt></td> 37</tr> 38<tr><td>Numbered</td> 39<td><tt class="literal"><span class="pre">#include <boost/mpl/map/map</span></tt><em>n</em><tt class="literal"><span class="pre">.hpp></span></tt></td> 40</tr> 41</tbody> 42</table> 43</div> 44<div class="section" id="id84"> 45<h3><a class="subsection-title" href="#model-of" name="model-of">Model of</a></h3> 46<ul class="simple"> 47<li><a class="reference internal" href="./variadic-sequence.html">Variadic Sequence</a></li> 48<li><a class="reference internal" href="./associative-sequence.html">Associative Sequence</a></li> 49<li><a class="reference internal" href="./extensible-associative-sequence.html">Extensible Associative Sequence</a></li> 50</ul> 51</div> 52<div class="section" id="id85"> 53<h3><a class="subsection-title" href="#expression-semantics" name="expression-semantics">Expression semantics</a></h3> 54<p>In the following table and subsequent specifications, <tt class="literal"><span class="pre">m</span></tt> is an instance of <tt class="literal"><span class="pre"><a href="./map.html" class="identifier">map</a></span></tt>, 55<tt class="literal"><span class="pre">pos</span></tt> is an iterator into <tt class="literal"><span class="pre">m</span></tt>, <tt class="literal"><span class="pre">x</span></tt> and <em>p</em><sub>1</sub>,<em>p</em><sub>2</sub>,... <em>p</em><sub>n</sub> are <tt class="literal"><span class="pre"><a href="./pair.html" class="identifier">pair</a></span></tt>s, and <tt class="literal"><span class="pre">k</span></tt> is an arbitrary type.</p> 56<table border="1" class="docutils table"> 57<colgroup> 58<col width="40%" /> 59<col width="60%" /> 60</colgroup> 61<thead valign="bottom"> 62<tr><th class="head">Expression</th> 63<th class="head">Semantics</th> 64</tr> 65</thead> 66<tbody valign="top"> 67<tr><td><pre class="first last literal-block"> 68<a href="./map.html" class="identifier">map</a><<em>p</em><sub>1</sub>,<em>p</em><sub>2</sub>,... <em>p</em><sub>n</sub>> 69<a href="./map.html" class="identifier">map</a><em>n</em><<em>p</em><sub>1</sub>,<em>p</em><sub>2</sub>,... <em>p</em><sub>n</sub>> 70</pre> 71</td> 72<td><tt class="literal"><span class="pre"><a href="./map.html" class="identifier">map</a></span></tt> of elements <em>p</em><sub>1</sub>,<em>p</em><sub>2</sub>,... <em>p</em><sub>n</sub>; see 73<a class="reference internal" href="./variadic-sequence.html">Variadic Sequence</a>.</td> 74</tr> 75<tr><td><pre class="first last literal-block"> 76<a href="./map.html" class="identifier">map</a><<em>p</em><sub>1</sub>,<em>p</em><sub>2</sub>,... <em>p</em><sub>n</sub>>::type 77<a href="./map.html" class="identifier">map</a><em>n</em><<em>p</em><sub>1</sub>,<em>p</em><sub>2</sub>,... <em>p</em><sub>n</sub>>::type 78</pre> 79</td> 80<td>Identical to <tt class="literal"><span class="pre"><a href="./map.html" class="identifier">map</a></span></tt><em>n</em><tt class="literal"><span class="pre"><</span></tt><em>p</em><sub>1</sub>,<em>p</em><sub>2</sub>,... <em>p</em><sub>n</sub><tt class="literal"><span class="pre">></span></tt>; 81see <a class="reference internal" href="./variadic-sequence.html">Variadic Sequence</a>.</td> 82</tr> 83<tr><td><tt class="literal"><span class="pre"><a href="./begin.html" class="identifier">begin</a><m>::type</span></tt></td> 84<td>An iterator pointing to the beginning of <tt class="literal"><span class="pre">m</span></tt>; 85see <a class="reference internal" href="./associative-sequence.html">Associative Sequence</a>.</td> 86</tr> 87<tr><td><tt class="literal"><span class="pre"><a href="./end.html" class="identifier">end</a><m>::type</span></tt></td> 88<td>An iterator pointing to the end of <tt class="literal"><span class="pre">m</span></tt>; 89see <a class="reference internal" href="./associative-sequence.html">Associative Sequence</a>.</td> 90</tr> 91<tr><td><tt class="literal"><span class="pre"><a href="./size.html" class="identifier">size</a><m>::type</span></tt></td> 92<td>The size of <tt class="literal"><span class="pre">m</span></tt>; see <a class="reference internal" href="./associative-sequence.html">Associative Sequence</a>.</td> 93</tr> 94<tr><td><tt class="literal"><span class="pre"><a href="./empty.html" class="identifier">empty</a><m>::type</span></tt></td> 95<td>A boolean <a class="reference internal" href="./integral-constant.html">Integral Constant</a> <tt class="literal"><span class="pre">c</span></tt> such that 96<tt class="literal"><span class="pre">c::value</span> <span class="pre">==</span> <span class="pre">true</span></tt> if and only if <tt class="literal"><span class="pre">m</span></tt> is empty; see 97<a class="reference internal" href="./associative-sequence.html">Associative Sequence</a>.</td> 98</tr> 99<tr><td><tt class="literal"><span class="pre"><a href="./front.html" class="identifier">front</a><m>::type</span></tt></td> 100<td>The first element in <tt class="literal"><span class="pre">m</span></tt>; see 101<a class="reference internal" href="./associative-sequence.html">Associative Sequence</a>.</td> 102</tr> 103<tr><td><tt class="literal"><span class="pre"><a href="./has-key.html" class="identifier">has_key</a><m,k>::type</span></tt></td> 104<td>Queries the presence of elements with the key <tt class="literal"><span class="pre">k</span></tt> in 105<tt class="literal"><span class="pre">m</span></tt>; see <a class="reference internal" href="./associative-sequence.html">Associative Sequence</a>.</td> 106</tr> 107<tr><td><tt class="literal"><span class="pre"><a href="./count.html" class="identifier">count</a><m,k>::type</span></tt></td> 108<td>The number of elements with the key <tt class="literal"><span class="pre">k</span></tt> in <tt class="literal"><span class="pre">m</span></tt>; 109see <a class="reference internal" href="./associative-sequence.html">Associative Sequence</a>.</td> 110</tr> 111<tr><td><tt class="literal"><span class="pre"><a href="./order.html" class="identifier">order</a><m,k>::type</span></tt></td> 112<td>A unique unsigned <a class="reference internal" href="./integral-constant.html">Integral Constant</a> associated with 113the key <tt class="literal"><span class="pre">k</span></tt> in <tt class="literal"><span class="pre">m</span></tt>; see <a class="reference internal" href="./associative-sequence.html">Associative Sequence</a>.</td> 114</tr> 115<tr><td><pre class="first last literal-block"> 116<a href="./at.html" class="identifier">at</a><m,k>::type 117<a href="./at.html" class="identifier">at</a><m,k,default>::type 118</pre> 119</td> 120<td>The element associated with the key <tt class="literal"><span class="pre">k</span></tt> in 121<tt class="literal"><span class="pre">m</span></tt>; see <a class="reference internal" href="./associative-sequence.html">Associative Sequence</a>.</td> 122</tr> 123<tr><td><tt class="literal"><span class="pre"><a href="./key-type.html" class="identifier">key_type</a><m,x>::type</span></tt></td> 124<td>Identical to <tt class="literal"><span class="pre">x::first</span></tt>; see <a class="reference internal" href="./associative-sequence.html">Associative Sequence</a>.</td> 125</tr> 126<tr><td><tt class="literal"><span class="pre"><a href="./value-type.html" class="identifier">value_type</a><m,x>::type</span></tt></td> 127<td>Identical to <tt class="literal"><span class="pre">x::second</span></tt>; see <a class="reference internal" href="./associative-sequence.html">Associative Sequence</a>.</td> 128</tr> 129<tr><td><tt class="literal"><span class="pre"><a href="./insert.html" class="identifier">insert</a><m,x>::type</span></tt></td> 130<td><p class="first">A new <tt class="literal"><span class="pre"><a href="./map.html" class="identifier">map</a></span></tt>, <tt class="literal"><span class="pre">t</span></tt>, equivalent to <tt class="literal"><span class="pre">m</span></tt> except that</p> 131<pre class="literal-block"> 132<a href="./at.html" class="identifier">at</a>< t, <a href="./key-type.html" class="identifier">key_type</a><m,x>::type >::type 133</pre> 134<p class="last">is identical to <tt class="literal"><span class="pre"><a href="./value-type.html" class="identifier">value_type</a><m,x>::type</span></tt>.</p> 135</td> 136</tr> 137<tr><td><tt class="literal"><span class="pre"><a href="./insert.html" class="identifier">insert</a><m,pos,x>::type</span></tt></td> 138<td>Equivalent to <tt class="literal"><span class="pre"><a href="./insert.html" class="identifier">insert</a><m,x>::type</span></tt>; <tt class="literal"><span class="pre">pos</span></tt> is ignored.</td> 139</tr> 140<tr><td><tt class="literal"><span class="pre"><a href="./erase-key.html" class="identifier">erase_key</a><m,k>::type</span></tt></td> 141<td>A new <tt class="literal"><span class="pre"><a href="./map.html" class="identifier">map</a></span></tt>, <tt class="literal"><span class="pre">t</span></tt>, equivalent to <tt class="literal"><span class="pre">m</span></tt> except that 142<tt class="literal"><span class="pre"><a href="./has-key.html" class="identifier">has_key</a><t,</span> <span class="pre">k>::value</span> <span class="pre">==</span> <span class="pre">false</span></tt>.</td> 143</tr> 144<tr><td><tt class="literal"><span class="pre"><a href="./erase.html" class="identifier">erase</a><m,pos>::type</span></tt></td> 145<td>Equivalent to <tt class="literal"><span class="pre"><a href="./erase.html" class="identifier">erase</a><m,</span> <span class="pre"><a href="./deref.html" class="identifier">deref</a><pos>::type</span> <span class="pre">>::type</span></tt>.</td> 146</tr> 147<tr><td><tt class="literal"><span class="pre"><a href="./clear.html" class="identifier">clear</a><m>::type</span></tt></td> 148<td>An empty <tt class="literal"><span class="pre"><a href="./map.html" class="identifier">map</a></span></tt>; see <a class="reference internal" href="./clear.html">clear</a>.</td> 149</tr> 150</tbody> 151</table> 152</div> 153<div class="section" id="id86"> 154<h3><a class="subsection-title" href="#example" name="example">Example</a></h3> 155<pre class="literal-block"> 156typedef <a href="./map.html" class="identifier">map</a>< 157 <a href="./pair.html" class="identifier">pair</a><int,unsigned> 158 , <a href="./pair.html" class="identifier">pair</a><char,unsigned char> 159 , <a href="./pair.html" class="identifier">pair</a><<a href="./long.html" class="identifier">long_</a><5>,char[17]> 160 , <a href="./pair.html" class="identifier">pair</a><int[42],bool> 161 > m; 162 163<a href="./assert-relation.html" class="identifier">BOOST_MPL_ASSERT_RELATION</a>( <a href="./size.html" class="identifier">size</a><m>::value, ==, 4 ); 164<a href="./assert-not.html" class="identifier">BOOST_MPL_ASSERT_NOT</a>(( <a href="./empty.html" class="identifier">empty</a><m> )); 165 166<a href="./assert.html" class="identifier">BOOST_MPL_ASSERT</a>(( is_same< <a href="./at.html" class="identifier">at</a><m,int>::type, unsigned > )); 167<a href="./assert.html" class="identifier">BOOST_MPL_ASSERT</a>(( is_same< <a href="./at.html" class="identifier">at</a><m,<a href="./long.html" class="identifier">long_</a><5> >::type, char[17] > )); 168<a href="./assert.html" class="identifier">BOOST_MPL_ASSERT</a>(( is_same< <a href="./at.html" class="identifier">at</a><m,int[42]>::type, bool > )); 169<a href="./assert.html" class="identifier">BOOST_MPL_ASSERT</a>(( is_same< <a href="./at.html" class="identifier">at</a><m,long>::type, <a href="./void.html" class="identifier">void_</a> > )); 170</pre> 171</div> 172<div class="section" id="id87"> 173<h3><a class="subsection-title" href="#see-also" name="see-also">See also</a></h3> 174<p><a class="reference internal" href="./sequences.html">Sequences</a>, <a class="reference internal" href="./variadic-sequence.html">Variadic Sequence</a>, <a class="reference internal" href="./associative-sequence.html">Associative Sequence</a>, <a class="reference internal" href="./extensible-associative-sequence.html">Extensible Associative Sequence</a>, <a class="reference internal" href="./set.html">set</a>, <a class="reference internal" href="./vector.html">vector</a></p> 175<!-- Sequences/Classes//range_c |60 --> 176</div> 177</div> 178 179<div class="footer-separator"></div> 180<table class="footer"><tr class="footer"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./set.html" class="navigation-link">Prev</a> <a href="./range-c.html" class="navigation-link">Next</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./set.html" class="navigation-link">Back</a> <a href="./range-c.html" class="navigation-link">Along</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./classes.html" class="navigation-link">Up</a> <a href="../refmanual.html" class="navigation-link">Home</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./refmanual_toc.html" class="navigation-link">Full TOC</a></span></td> 181<td><div class="copyright-footer"><div class="copyright">Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams</div> 182Distributed under the Boost Software License, Version 1.0. (See accompanying 183file LICENSE_1_0.txt or copy at <a class="reference external" href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)</div></td></tr></table></body> 184</html> 185