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: vector</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="./classes.html" class="navigation-link">Prev</a> <a href="./list.html" class="navigation-link">Next</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group">Back <a href="./list.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="./vector.html" class="navigation-link">vector</a></td> 13</tr></table><div class="header-separator"></div> 14<div class="section" id="vector"> 15<h1><a class="toc-backref" href="./classes.html#id1406">vector</a></h1> 16<div class="section" id="id51"> 17<h3><a class="subsection-title" href="#description" name="description">Description</a></h3> 18<p><tt class="literal"><span class="pre"><a href="./vector.html" class="identifier">vector</a></span></tt> is a <a class="reference internal" href="./variadic-sequence.html">variadic</a>, <a class="reference internal" href="./random-access-sequence.html">random access</a>, <a class="reference internal" href="./extensible-sequence.html">extensible</a> sequence of types that 19supports constant-time insertion and removal of elements at both ends, and 20linear-time insertion and removal of elements in the middle. On compilers that 21support the <tt class="literal"><span class="pre">typeof</span></tt> extension, <tt class="literal"><span class="pre"><a href="./vector.html" class="identifier">vector</a></span></tt> is the simplest and in many cases the 22most efficient sequence.</p> 23</div> 24<div class="section" id="header"> 25<h3>Header</h3> 26<table border="1" class="docutils table"> 27<colgroup> 28<col width="26%" /> 29<col width="74%" /> 30</colgroup> 31<thead valign="bottom"> 32<tr><th class="head">Sequence form</th> 33<th class="head">Header</th> 34</tr> 35</thead> 36<tbody valign="top"> 37<tr><td>Variadic</td> 38<td><tt class="literal"><span class="pre">#include <<a href="../../../../boost/mpl/vector.hpp" class="header">boost/mpl/vector.hpp</a>></span></tt></td> 39</tr> 40<tr><td>Numbered</td> 41<td><tt class="literal"><span class="pre">#include <boost/mpl/vector/vector</span></tt><em>n</em><tt class="literal"><span class="pre">.hpp></span></tt></td> 42</tr> 43</tbody> 44</table> 45</div> 46<div class="section" id="model-of"> 47<h3>Model of</h3> 48<ul class="simple"> 49<li><a class="reference internal" href="./variadic-sequence.html">Variadic Sequence</a></li> 50<li><a class="reference internal" href="./random-access-sequence.html">Random Access Sequence</a></li> 51<li><a class="reference internal" href="./extensible-sequence.html">Extensible Sequence</a></li> 52<li><a class="reference internal" href="./back-extensible-sequence.html">Back Extensible Sequence</a></li> 53<li><a class="reference internal" href="./front-extensible-sequence.html">Front Extensible Sequence</a></li> 54</ul> 55</div> 56<div class="section" id="id54"> 57<h3><a class="subsection-title" href="#expression-semantics" name="expression-semantics">Expression semantics</a></h3> 58<p>In the following table, <tt class="literal"><span class="pre">v</span></tt> is an instance of <tt class="literal"><span class="pre"><a href="./vector.html" class="identifier">vector</a></span></tt>, <tt class="literal"><span class="pre">pos</span></tt> and <tt class="literal"><span class="pre">last</span></tt> are iterators 59into <tt class="literal"><span class="pre">v</span></tt>, <tt class="literal"><span class="pre">r</span></tt> is a <a class="reference internal" href="./forward-sequence.html">Forward Sequence</a>, <tt class="literal"><span class="pre">n</span></tt> is an <a class="reference internal" href="./integral-constant.html">Integral Constant</a>, and <tt class="literal"><span class="pre">x</span></tt> and 60<em>t</em><sub>1</sub>,<em>t</em><sub>2</sub>,... <em>t</em><sub>n</sub> are arbitrary types.</p> 61<table border="1" class="docutils table"> 62<colgroup> 63<col width="40%" /> 64<col width="60%" /> 65</colgroup> 66<thead valign="bottom"> 67<tr><th class="head">Expression</th> 68<th class="head">Semantics</th> 69</tr> 70</thead> 71<tbody valign="top"> 72<tr><td><pre class="first last literal-block"> 73<a href="./vector.html" class="identifier">vector</a><<em>t</em><sub>1</sub>,<em>t</em><sub>2</sub>,... <em>t</em><sub>n</sub>> 74<a href="./vector.html" class="identifier">vector</a><em>n</em><<em>t</em><sub>1</sub>,<em>t</em><sub>2</sub>,... <em>t</em><sub>n</sub>> 75</pre> 76</td> 77<td><tt class="literal"><span class="pre"><a href="./vector.html" class="identifier">vector</a></span></tt> of elements <em>t</em><sub>1</sub>,<em>t</em><sub>2</sub>,... <em>t</em><sub>n</sub>; see 78<a class="reference internal" href="./variadic-sequence.html">Variadic Sequence</a>.</td> 79</tr> 80<tr><td><pre class="first last literal-block"> 81<a href="./vector.html" class="identifier">vector</a><<em>t</em><sub>1</sub>,<em>t</em><sub>2</sub>,... <em>t</em><sub>n</sub>>::type 82<a href="./vector.html" class="identifier">vector</a><em>n</em><<em>t</em><sub>1</sub>,<em>t</em><sub>2</sub>,... <em>t</em><sub>n</sub>>::type 83</pre> 84</td> 85<td>Identical to <tt class="literal"><span class="pre"><a href="./vector.html" class="identifier">vector</a></span></tt><em>n</em><tt class="literal"><span class="pre"><</span></tt><em>t</em><sub>1</sub>,<em>t</em><sub>2</sub>,... <em>t</em><sub>n</sub><tt class="literal"><span class="pre">></span></tt>; 86see <a class="reference internal" href="./variadic-sequence.html">Variadic Sequence</a>.</td> 87</tr> 88<tr><td><tt class="literal"><span class="pre"><a href="./begin.html" class="identifier">begin</a><v>::type</span></tt></td> 89<td>An iterator pointing to the beginning of <tt class="literal"><span class="pre">v</span></tt>; 90see <a class="reference internal" href="./random-access-sequence.html">Random Access Sequence</a>.</td> 91</tr> 92<tr><td><tt class="literal"><span class="pre"><a href="./end.html" class="identifier">end</a><v>::type</span></tt></td> 93<td>An iterator pointing to the end of <tt class="literal"><span class="pre">v</span></tt>; 94see <a class="reference internal" href="./random-access-sequence.html">Random Access Sequence</a>.</td> 95</tr> 96<tr><td><tt class="literal"><span class="pre"><a href="./size.html" class="identifier">size</a><v>::type</span></tt></td> 97<td>The size of <tt class="literal"><span class="pre">v</span></tt>; see <a class="reference internal" href="./random-access-sequence.html">Random Access Sequence</a>.</td> 98</tr> 99<tr><td><tt class="literal"><span class="pre"><a href="./empty.html" class="identifier">empty</a><v>::type</span></tt></td> 100<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 101<tt class="literal"><span class="pre">c::value</span> <span class="pre">==</span> <span class="pre">true</span></tt> if and only if the sequence is empty; 102see <a class="reference internal" href="./random-access-sequence.html">Random Access Sequence</a>.</td> 103</tr> 104<tr><td><tt class="literal"><span class="pre"><a href="./front.html" class="identifier">front</a><v>::type</span></tt></td> 105<td>The first element in <tt class="literal"><span class="pre">v</span></tt>; see 106<a class="reference internal" href="./random-access-sequence.html">Random Access Sequence</a>.</td> 107</tr> 108<tr><td><tt class="literal"><span class="pre"><a href="./back.html" class="identifier">back</a><v>::type</span></tt></td> 109<td>The last element in <tt class="literal"><span class="pre">v</span></tt>; see 110<a class="reference internal" href="./random-access-sequence.html">Random Access Sequence</a>.</td> 111</tr> 112<tr><td><tt class="literal"><span class="pre"><a href="./at.html" class="identifier">at</a><v,n>::type</span></tt></td> 113<td>The <tt class="literal"><span class="pre">n</span></tt>th element from the beginning of <tt class="literal"><span class="pre">v</span></tt>; see 114<a class="reference internal" href="./random-access-sequence.html">Random Access Sequence</a>.</td> 115</tr> 116<tr><td><tt class="literal"><span class="pre"><a href="./insert.html" class="identifier">insert</a><v,pos,x>::type</span></tt></td> 117<td>A new <tt class="literal"><span class="pre"><a href="./vector.html" class="identifier">vector</a></span></tt> of following elements: 118[<tt class="literal"><span class="pre"><a href="./begin.html" class="identifier">begin</a><v>::type</span></tt>, <tt class="literal"><span class="pre">pos</span></tt>), <tt class="literal"><span class="pre">x</span></tt>, 119[<tt class="literal"><span class="pre">pos</span></tt>, <tt class="literal"><span class="pre"><a href="./end.html" class="identifier">end</a><v>::type</span></tt>); see <a class="reference internal" href="./extensible-sequence.html">Extensible Sequence</a>.</td> 120</tr> 121<tr><td><tt class="literal"><span class="pre"><a href="./insert-range.html" class="identifier">insert_range</a><v,pos,r>::type</span></tt></td> 122<td>A new <tt class="literal"><span class="pre"><a href="./vector.html" class="identifier">vector</a></span></tt> of following elements: 123[<tt class="literal"><span class="pre"><a href="./begin.html" class="identifier">begin</a><v>::type</span></tt>, <tt class="literal"><span class="pre">pos</span></tt>), 124[<tt class="literal"><span class="pre"><a href="./begin.html" class="identifier">begin</a><r>::type</span></tt>, <tt class="literal"><span class="pre"><a href="./end.html" class="identifier">end</a><r>::type</span></tt>) 125[<tt class="literal"><span class="pre">pos</span></tt>, <tt class="literal"><span class="pre"><a href="./end.html" class="identifier">end</a><v>::type</span></tt>); see <a class="reference internal" href="./extensible-sequence.html">Extensible Sequence</a>.</td> 126</tr> 127<tr><td><tt class="literal"><span class="pre"><a href="./erase.html" class="identifier">erase</a><v,pos>::type</span></tt></td> 128<td>A new <tt class="literal"><span class="pre"><a href="./vector.html" class="identifier">vector</a></span></tt> of following elements: 129[<tt class="literal"><span class="pre"><a href="./begin.html" class="identifier">begin</a><v>::type</span></tt>, <tt class="literal"><span class="pre">pos</span></tt>), 130[<tt class="literal"><span class="pre"><a href="./next.html" class="identifier">next</a><pos>::type</span></tt>, <tt class="literal"><span class="pre"><a href="./end.html" class="identifier">end</a><v>::type</span></tt>); see 131<a class="reference internal" href="./extensible-sequence.html">Extensible Sequence</a>.</td> 132</tr> 133<tr><td><tt class="literal"><span class="pre"><a href="./erase.html" class="identifier">erase</a><v,pos,last>::type</span></tt></td> 134<td>A new <tt class="literal"><span class="pre"><a href="./vector.html" class="identifier">vector</a></span></tt> of following elements: 135[<tt class="literal"><span class="pre"><a href="./begin.html" class="identifier">begin</a><v>::type</span></tt>, <tt class="literal"><span class="pre">pos</span></tt>), 136[<tt class="literal"><span class="pre">last</span></tt>, <tt class="literal"><span class="pre"><a href="./end.html" class="identifier">end</a><v>::type</span></tt>); see <a class="reference internal" href="./extensible-sequence.html">Extensible Sequence</a>.</td> 137</tr> 138<tr><td><tt class="literal"><span class="pre"><a href="./clear.html" class="identifier">clear</a><v>::type</span></tt></td> 139<td>An empty <tt class="literal"><span class="pre"><a href="./vector.html" class="identifier">vector</a></span></tt>; see <a class="reference internal" href="./extensible-sequence.html">Extensible Sequence</a>.</td> 140</tr> 141<tr><td><tt class="literal"><span class="pre"><a href="./push-back.html" class="identifier">push_back</a><v,x>::type</span></tt></td> 142<td>A new <tt class="literal"><span class="pre"><a href="./vector.html" class="identifier">vector</a></span></tt> of following elements: 143[<tt class="literal"><span class="pre"><a href="./begin.html" class="identifier">begin</a><v>::type</span></tt>, <tt class="literal"><span class="pre"><a href="./end.html" class="identifier">end</a><v>::type</span></tt>), <tt class="literal"><span class="pre">x</span></tt>; 144see <a class="reference internal" href="./back-extensible-sequence.html">Back Extensible Sequence</a>.</td> 145</tr> 146<tr><td><tt class="literal"><span class="pre"><a href="./pop-back.html" class="identifier">pop_back</a><v>::type</span></tt></td> 147<td>A new <tt class="literal"><span class="pre"><a href="./vector.html" class="identifier">vector</a></span></tt> of following elements: 148[<tt class="literal"><span class="pre"><a href="./begin.html" class="identifier">begin</a><v>::type</span></tt>, <tt class="literal"><span class="pre"><a href="./prior.html" class="identifier">prior</a><</span> <span class="pre"><a href="./end.html" class="identifier">end</a><v>::type</span> <span class="pre">>::type</span></tt>); 149see <a class="reference internal" href="./back-extensible-sequence.html">Back Extensible Sequence</a>.</td> 150</tr> 151<tr><td><tt class="literal"><span class="pre"><a href="./push-front.html" class="identifier">push_front</a><v,x>::type</span></tt></td> 152<td>A new <tt class="literal"><span class="pre"><a href="./vector.html" class="identifier">vector</a></span></tt> of following elements: 153<tt class="literal"><span class="pre">x</span></tt>, [<tt class="literal"><span class="pre"><a href="./begin.html" class="identifier">begin</a><v>::type</span></tt>, <tt class="literal"><span class="pre"><a href="./end.html" class="identifier">end</a><v>::type</span></tt>); see <a class="reference internal" href="./front-extensible-sequence.html">Front Extensible Sequence</a>.</td> 154</tr> 155<tr><td><tt class="literal"><span class="pre"><a href="./pop-front.html" class="identifier">pop_front</a><v>::type</span></tt></td> 156<td>A new <tt class="literal"><span class="pre"><a href="./vector.html" class="identifier">vector</a></span></tt> of following elements: 157[<tt class="literal"><span class="pre"><a href="./next.html" class="identifier">next</a><</span> <span class="pre"><a href="./begin.html" class="identifier">begin</a><v>::type</span> <span class="pre">>::type</span></tt>, <tt class="literal"><span class="pre"><a href="./end.html" class="identifier">end</a><v>::type</span></tt>); 158see <a class="reference internal" href="./front-extensible-sequence.html">Front Extensible Sequence</a>.</td> 159</tr> 160</tbody> 161</table> 162</div> 163<div class="section" id="example"> 164<h3>Example</h3> 165<pre class="literal-block"> 166typedef <a href="./vector.html" class="identifier">vector</a><float,double,long double> floats; 167typedef <a href="./push-back.html" class="identifier">push_back</a><floats,int>::type types; 168 169<a href="./assert.html" class="identifier">BOOST_MPL_ASSERT</a>(( is_same< <a href="./at-c.html" class="identifier">at_c</a><types,3>::type, int > )); 170</pre> 171</div> 172<div class="section" id="id55"> 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="./random-access-sequence.html">Random Access Sequence</a>, <a class="reference internal" href="./extensible-sequence.html">Extensible Sequence</a>, <a class="reference internal" href="./vector-c.html">vector_c</a>, <a class="reference internal" href="./list.html">list</a></p> 175<!-- Sequences/Classes//list |20 --> 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="./classes.html" class="navigation-link">Prev</a> <a href="./list.html" class="navigation-link">Next</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group">Back <a href="./list.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