vector_of_reference.html 124 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
  4. <title>vector_of Reference</title>
  5. <link rel="stylesheet" href="../../boostbook.css" type="text/css">
  6. <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
  7. <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Bimap">
  8. <link rel="up" href="../reference.html" title="Reference">
  9. <link rel="prev" href="list_of_reference.html" title="list_of Reference">
  10. <link rel="next" href="unconstrained_set_of_reference.html" title="unconstrained_set_of Reference">
  11. </head>
  12. <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
  13. <table cellpadding="2" width="100%"><tr>
  14. <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
  15. <td align="center"><a href="../../../../../../index.html">Home</a></td>
  16. <td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
  17. <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
  18. <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
  19. <td align="center"><a href="../../../../../../more/index.htm">More</a></td>
  20. </tr></table>
  21. <hr>
  22. <div class="spirit-nav">
  23. <a accesskey="p" href="list_of_reference.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="unconstrained_set_of_reference.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
  24. </div>
  25. <div class="section">
  26. <div class="titlepage"><div><div><h3 class="title">
  27. <a name="boost_bimap.reference.vector_of_reference"></a><a class="link" href="vector_of_reference.html" title="vector_of Reference">vector_of
  28. Reference</a>
  29. </h3></div></div></div>
  30. <div class="toc"><dl class="toc">
  31. <dt><span class="section"><a href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.header__boost_bimap_vector_of_hpp__synopsis">Header
  32. "boost/bimap/vector_of.hpp" synopsis</a></span></dt>
  33. <dt><span class="section"><a href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views">vector_of
  34. views</a></span></dt>
  35. <dd><dl>
  36. <dt><span class="section"><a href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views.complexity_signature">Complexity
  37. signature</a></span></dt>
  38. <dt><span class="section"><a href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views.instantiation_types">Instantiation
  39. types</a></span></dt>
  40. <dt><span class="section"><a href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views.constructors__copy_and_assignment">Constructors,
  41. copy and assignment</a></span></dt>
  42. <dt><span class="section"><a href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views.capacity_operations">Capacity
  43. operations</a></span></dt>
  44. <dt><span class="section"><a href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views.modifiers">Modifiers</a></span></dt>
  45. <dt><span class="section"><a href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views.list_operations">List
  46. operations</a></span></dt>
  47. <dt><span class="section"><a href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views.rearrange_operations">Rearrange
  48. operations</a></span></dt>
  49. <dt><span class="section"><a href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views.serialization">Serialization</a></span></dt>
  50. </dl></dd>
  51. </dl></div>
  52. <div class="section">
  53. <div class="titlepage"><div><div><h4 class="title">
  54. <a name="boost_bimap.reference.vector_of_reference.header__boost_bimap_vector_of_hpp__synopsis"></a><a class="link" href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.header__boost_bimap_vector_of_hpp__synopsis" title='Header "boost/bimap/vector_of.hpp" synopsis'>Header
  55. "boost/bimap/vector_of.hpp" synopsis</a>
  56. </h4></div></div></div>
  57. <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
  58. <span class="keyword">namespace</span> <span class="identifier">bimaps</span> <span class="special">{</span>
  59. <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">KeyType</span> <span class="special">&gt;</span>
  60. <span class="keyword">struct</span> <span class="identifier">vector_of</span><span class="special">;</span>
  61. <span class="keyword">struct</span> <span class="identifier">vector_of_relation</span><span class="special">;</span>
  62. <span class="special">}</span> <span class="comment">// namespace bimap</span>
  63. <span class="special">}</span> <span class="comment">// namespace boost</span>
  64. </pre>
  65. </div>
  66. <div class="section">
  67. <div class="titlepage"><div><div><h4 class="title">
  68. <a name="boost_bimap.reference.vector_of_reference.vector_of_views"></a><a class="link" href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views" title="vector_of views">vector_of
  69. views</a>
  70. </h4></div></div></div>
  71. <div class="toc"><dl class="toc">
  72. <dt><span class="section"><a href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views.complexity_signature">Complexity
  73. signature</a></span></dt>
  74. <dt><span class="section"><a href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views.instantiation_types">Instantiation
  75. types</a></span></dt>
  76. <dt><span class="section"><a href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views.constructors__copy_and_assignment">Constructors,
  77. copy and assignment</a></span></dt>
  78. <dt><span class="section"><a href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views.capacity_operations">Capacity
  79. operations</a></span></dt>
  80. <dt><span class="section"><a href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views.modifiers">Modifiers</a></span></dt>
  81. <dt><span class="section"><a href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views.list_operations">List
  82. operations</a></span></dt>
  83. <dt><span class="section"><a href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views.rearrange_operations">Rearrange
  84. operations</a></span></dt>
  85. <dt><span class="section"><a href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views.serialization">Serialization</a></span></dt>
  86. </dl></div>
  87. <p>
  88. vector_of views are free-order sequences with constant time positional
  89. access and random access iterators. Elements in a vector_of view are by
  90. default sorted according to their order of insertion: this means that new
  91. elements inserted through a different view of the <code class="computeroutput"><span class="identifier">bimap</span></code>
  92. are appended to the end of the vector_of view; additionally, facilities
  93. are provided for further rearrangement of the elements. The public interface
  94. of vector_of views includes that of list_of views, with differences in
  95. the complexity of the operations, plus extra operations for positional
  96. access (<code class="computeroutput"><span class="keyword">operator</span><span class="special">[]</span></code>
  97. and <code class="computeroutput"><span class="identifier">at</span><span class="special">()</span></code>)
  98. and for capacity handling. Validity of iterators and references to elements
  99. is preserved in all operations, regardless of the capacity status.
  100. </p>
  101. <p>
  102. As is the case with list_of views, vector_of views have the following limitations
  103. with respect to STL sequence containers:
  104. </p>
  105. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  106. <li class="listitem">
  107. vector_of views are not <a href="https://www.boost.org/sgi/stl/Assignable.html" target="_top">Assignable</a>
  108. (like any other view.)
  109. </li>
  110. <li class="listitem">
  111. Insertions into a vector_of view may fail due to clashings with other
  112. views. This alters the semantics of the operations provided with respect
  113. to their analogues in STL sequence containers.
  114. </li>
  115. <li class="listitem">
  116. Elements in a vector_of view are not mutable, and can only be changed
  117. by means of replace and modify member functions.
  118. </li>
  119. </ul></div>
  120. <p>
  121. Having these restrictions into account, vector of views are models of
  122. <a href="https://www.boost.org/sgi/stl/RandomAccessContainer.html" target="_top">Random
  123. Access Container</a> and <a href="https://www.boost.org/sgi/stl/BackInsertionSequence.html" target="_top">Back
  124. Insertion Sequence</a>. Although these views do not model <a href="https://www.boost.org/sgi/stl/FrontInsertionSequence.html" target="_top">Front
  125. Insertion Sequence</a>, because front insertion and deletion take linear
  126. time, front operations are nonetheless provided to match the interface
  127. of list_of views. We only describe those types and operations that are
  128. either not present in the concepts modeled or do not exactly conform to
  129. the requirements for these types of containers.
  130. </p>
  131. <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
  132. <span class="keyword">namespace</span> <span class="identifier">bimaps</span> <span class="special">{</span>
  133. <span class="keyword">namespace</span> <span class="identifier">views</span> <span class="special">{</span>
  134. <span class="keyword">template</span><span class="special">&lt;</span> <span class="emphasis"><em>-implementation defined parameter list-</em></span> <span class="special">&gt;</span>
  135. <span class="keyword">class</span> <span class="emphasis"><em>-implementation defined view name-</em></span>
  136. <span class="special">{</span>
  137. <span class="keyword">public</span><span class="special">:</span>
  138. <span class="comment">// types</span>
  139. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">value_type</span><span class="special">;</span>
  140. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">allocator_type</span><span class="special">;</span>
  141. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">reference</span><span class="special">;</span>
  142. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">const_reference</span><span class="special">;</span>
  143. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">iterator</span><span class="special">;</span>
  144. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">const_iterator</span><span class="special">;</span>
  145. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">size_type</span><span class="special">;</span>
  146. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">difference_type</span><span class="special">;</span>
  147. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">pointer</span><span class="special">;</span>
  148. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">const_pointer</span><span class="special">;</span>
  149. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">reverse_iterator</span><span class="special">;</span>
  150. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">const_reverse_iterator</span><span class="special">;</span>
  151. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">info_type</span><span class="special">;</span>
  152. <span class="comment">// construct / copy / destroy</span>
  153. <span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
  154. <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">InputIterator</span> <span class="special">&gt;</span>
  155. <span class="keyword">void</span> <a class="link" href="vector_of_reference.html#reference_vector_of_assign_iterator_iterator">assign</a><span class="special">(</span><span class="identifier">InputIterator</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">InputIterator</span> <span class="identifier">last</span><span class="special">);</span>
  156. <span class="keyword">void</span> <a class="link" href="vector_of_reference.html#reference_vector_of_assign_size_value">assign</a><span class="special">(</span><span class="identifier">size_type</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <span class="identifier">value</span><span class="special">);</span>
  157. <span class="identifier">allocator_type</span> <span class="identifier">get_allocator</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
  158. <span class="comment">// iterators</span>
  159. <span class="identifier">iterator</span> <span class="identifier">begin</span><span class="special">();</span>
  160. <span class="identifier">const_iterator</span> <span class="identifier">begin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
  161. <span class="identifier">iterator</span> <span class="identifier">end</span><span class="special">();</span>
  162. <span class="identifier">const_iterator</span> <span class="identifier">end</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
  163. <span class="identifier">reverse_iterator</span> <span class="identifier">rbegin</span><span class="special">();</span>
  164. <span class="identifier">const_reverse_iterator</span> <span class="identifier">rbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
  165. <span class="identifier">reverse_iterator</span> <span class="identifier">rend</span><span class="special">();</span>
  166. <span class="identifier">const_reverse_iterator</span> <span class="identifier">rend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
  167. <span class="comment">// capacity</span>
  168. <span class="keyword">bool</span> <span class="identifier">empty</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
  169. <span class="identifier">size_type</span> <span class="identifier">size</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
  170. <span class="identifier">size_type</span> <span class="identifier">max_size</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
  171. <span class="identifier">size_type</span> <a class="link" href="vector_of_reference.html#reference_vector_of_capacity">capacity</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
  172. <span class="keyword">void</span> <a class="link" href="vector_of_reference.html#reference_vector_of_reserve_size">reserve</a><span class="special">(</span><span class="identifier">size_type</span> <span class="identifier">m</span><span class="special">);</span>
  173. <span class="keyword">void</span> <a class="link" href="vector_of_reference.html#reference_vector_of_resize_size_value">resize</a><span class="special">(</span><span class="identifier">size_type</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <span class="identifier">x</span> <span class="special">=</span> <span class="identifier">value_type</span><span class="special">());</span>
  174. <span class="comment">// access</span>
  175. <span class="identifier">const_reference</span> <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">size_type</span> <span class="identifier">n</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
  176. <span class="identifier">const_reference</span> <span class="identifier">at</span><span class="special">(</span><span class="identifier">size_type</span> <span class="identifier">n</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
  177. <span class="identifier">const_reference</span> <span class="identifier">front</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
  178. <span class="identifier">const_reference</span> <span class="identifier">back</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
  179. <span class="comment">// modifiers</span>
  180. <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">iterator</span><span class="special">,</span><span class="keyword">bool</span><span class="special">&gt;</span> <a class="link" href="vector_of_reference.html#reference_vector_of_push_front_value">push_front</a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
  181. <span class="keyword">void</span> <span class="identifier">pop_front</span><span class="special">();</span>
  182. <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">iterator</span><span class="special">,</span><span class="keyword">bool</span><span class="special">&gt;</span> <a class="link" href="vector_of_reference.html#reference_vector_of_push_back_value">push_back</a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
  183. <span class="keyword">void</span> <span class="identifier">pop_back</span><span class="special">();</span>
  184. <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">iterator</span><span class="special">,</span><span class="keyword">bool</span><span class="special">&gt;</span> <a class="link" href="vector_of_reference.html#reference_vector_of_insert_iterator_value">insert</a><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
  185. <span class="keyword">void</span> <a class="link" href="vector_of_reference.html#reference_vector_of_insert_iterator_size_value">insert</a><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="identifier">size_type</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
  186. <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">InputIterator</span><span class="special">&gt;</span>
  187. <span class="keyword">void</span> <a class="link" href="vector_of_reference.html#reference_vector_of_insert_iterator_iterator_iterator">insert</a><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="identifier">InputIterator</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">InputIterator</span> <span class="identifier">last</span><span class="special">);</span>
  188. <span class="identifier">iterator</span> <a class="link" href="vector_of_reference.html#reference_vector_of_erase_iterator">erase</a><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">);</span>
  189. <span class="identifier">iterator</span> <a class="link" href="vector_of_reference.html#reference_vector_of_erase_iterator_iterator">erase</a><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">iterator</span> <span class="identifier">last</span><span class="special">);</span>
  190. <span class="keyword">bool</span> <a class="link" href="vector_of_reference.html#reference_vector_of_replace_iterator_value">replace</a><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
  191. <span class="comment">// Only in map views</span>
  192. <span class="comment">// {</span>
  193. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">key_type</span><span class="special">;</span>
  194. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">mapped_type</span><span class="special">;</span>
  195. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">data_type</span><span class="special">;</span> <span class="comment">// Equal to mapped_type</span>
  196. <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">CompatibleKey</span> <span class="special">&gt;</span>
  197. <span class="keyword">bool</span> <a class="link" href="vector_of_reference.html#reference_vector_of_replace_key_iterator_key">replace_key</a><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">CompatibleKey</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
  198. <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">CompatibleData</span> <span class="special">&gt;</span>
  199. <span class="keyword">bool</span> <a class="link" href="vector_of_reference.html#reference_vector_of_replace_data_iterator_data">replace_data</a><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">CompatibleData</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
  200. <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">KeyModifier</span> <span class="special">&gt;</span>
  201. <span class="keyword">bool</span> <a class="link" href="vector_of_reference.html#reference_vector_of_modify_key_iterator_modifier">modify_key</a><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="identifier">KeyModifier</span> <span class="identifier">mod</span><span class="special">);</span>
  202. <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">DataModifier</span> <span class="special">&gt;</span>
  203. <span class="keyword">bool</span> <a class="link" href="vector_of_reference.html#reference_vector_of_modify_data_iterator_modifier">modify_data</a><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="identifier">DataModifier</span> <span class="identifier">mod</span><span class="special">);</span>
  204. <span class="comment">// }</span>
  205. <span class="keyword">void</span> <span class="identifier">clear</span><span class="special">();</span>
  206. <span class="comment">// list operations</span>
  207. <span class="keyword">void</span> <a class="link" href="vector_of_reference.html#reference_vector_of_splice_iterator_this">splice</a><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
  208. <span class="keyword">void</span> <a class="link" href="vector_of_reference.html#reference_vector_of_splice_iterator_this_iterator">splice</a><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">iterator</span> <span class="identifier">i</span><span class="special">);</span>
  209. <span class="keyword">void</span> <a class="link" href="vector_of_reference.html#reference_vector_of_splice_iterator_this_iterator_iterator">splice</a><span class="special">(</span>
  210. <span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">iterator</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">iterator</span> <span class="identifier">last</span><span class="special">);</span>
  211. <span class="keyword">void</span> <a class="link" href="vector_of_reference.html#reference_vector_of_remove_value">remove</a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <span class="identifier">value</span><span class="special">);</span>
  212. <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">Predicate</span> <span class="special">&gt;</span>
  213. <span class="keyword">void</span> <a class="link" href="vector_of_reference.html#reference_vector_of_remove_if_predicate">remove_if</a><span class="special">(</span><span class="identifier">Predicate</span> <span class="identifier">pred</span><span class="special">);</span>
  214. <span class="keyword">void</span> <a class="link" href="vector_of_reference.html#reference_vector_of_unique">unique</a><span class="special">();</span>
  215. <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">BinaryPredicate</span> <span class="special">&gt;</span>
  216. <span class="keyword">void</span> <a class="link" href="vector_of_reference.html#reference_vector_of_unique_predicate">unique</a><span class="special">(</span><span class="identifier">BinaryPredicate</span> <span class="identifier">binary_pred</span><span class="special">);</span>
  217. <span class="keyword">void</span> <a class="link" href="vector_of_reference.html#reference_vector_of_merge_this">merge</a><span class="special">(</span><span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
  218. <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">Compare</span> <span class="special">&gt;</span>
  219. <span class="keyword">void</span> <a class="link" href="vector_of_reference.html#reference_vector_of_merge_this_compare">merge</a><span class="special">(</span><span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">Compare</span> <span class="identifier">comp</span><span class="special">);</span>
  220. <span class="keyword">void</span> <a class="link" href="vector_of_reference.html#reference_vector_of_sort">sort</a><span class="special">();</span>
  221. <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">Compare</span> <span class="special">&gt;</span>
  222. <span class="keyword">void</span> <a class="link" href="vector_of_reference.html#reference_vector_of_sort_compare">sort</a><span class="special">(</span><span class="identifier">Compare</span> <span class="identifier">comp</span><span class="special">);</span>
  223. <span class="keyword">void</span> <a class="link" href="vector_of_reference.html#reference_vector_of_reverse">reverse</a><span class="special">();</span>
  224. <span class="comment">// rearrange operations</span>
  225. <span class="keyword">void</span> <a class="link" href="vector_of_reference.html#reference_vector_of_relocate_iterator_iterator">relocate</a><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="identifier">iterator</span> <span class="identifier">i</span><span class="special">);</span>
  226. <span class="keyword">void</span> <a class="link" href="vector_of_reference.html#reference_vector_of_relocate_iterator_iterator_iterator">relocate</a><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="identifier">iterator</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">iterator</span> <span class="identifier">last</span><span class="special">);</span>
  227. <span class="special">};</span>
  228. <span class="comment">// view comparison</span>
  229. <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==(</span><span class="keyword">const</span> <span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="identifier">v1</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="identifier">v2</span> <span class="special">);</span>
  230. <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&lt;</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="identifier">v1</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="identifier">v2</span> <span class="special">);</span>
  231. <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!=(</span><span class="keyword">const</span> <span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="identifier">v1</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="identifier">v2</span> <span class="special">);</span>
  232. <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&gt;</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="identifier">v1</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="identifier">v2</span> <span class="special">);</span>
  233. <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&gt;=(</span><span class="keyword">const</span> <span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="identifier">v1</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="identifier">v2</span> <span class="special">);</span>
  234. <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&lt;=(</span><span class="keyword">const</span> <span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="identifier">v1</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="identifier">v2</span> <span class="special">);</span>
  235. <span class="special">}</span> <span class="comment">// namespace views</span>
  236. <span class="special">}</span> <span class="comment">// namespace bimap</span>
  237. <span class="special">}</span> <span class="comment">// namespace boost</span>
  238. </pre>
  239. <p>
  240. In the case of a <code class="computeroutput"><span class="identifier">bimap</span><span class="special">&lt;</span> <span class="identifier">vector_of</span><span class="special">&lt;</span><span class="identifier">Left</span><span class="special">&gt;,</span> <span class="special">...</span> <span class="special">&gt;</span></code>
  241. </p>
  242. <p>
  243. In the set view:
  244. </p>
  245. <pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">signature</span><span class="special">-</span><span class="identifier">compatible</span> <span class="identifier">with</span> <span class="identifier">relation</span><span class="special">&lt;</span> <span class="identifier">Left</span><span class="special">,</span> <span class="special">...</span> <span class="special">&gt;</span> <span class="identifier">key_type</span><span class="special">;</span>
  246. <span class="keyword">typedef</span> <span class="identifier">signature</span><span class="special">-</span><span class="identifier">compatible</span> <span class="identifier">with</span> <span class="identifier">relation</span><span class="special">&lt;</span> <span class="identifier">Left</span><span class="special">,</span> <span class="special">...</span> <span class="special">&gt;</span> <span class="identifier">value_type</span><span class="special">;</span>
  247. </pre>
  248. <p>
  249. In the left map view:
  250. </p>
  251. <pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">Left</span> <span class="identifier">key_type</span><span class="special">;</span>
  252. <span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">mapped_type</span><span class="special">;</span>
  253. <span class="keyword">typedef</span> <span class="identifier">signature</span><span class="special">-</span><span class="identifier">compatible</span> <span class="identifier">with</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span> <span class="identifier">Left</span><span class="special">,</span> <span class="special">...</span> <span class="special">&gt;</span> <span class="identifier">value_type</span><span class="special">;</span>
  254. </pre>
  255. <p>
  256. In the right map view:
  257. </p>
  258. <pre class="programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">key_type</span><span class="special">;</span>
  259. <span class="keyword">typedef</span> <span class="identifier">Left</span> <span class="identifier">mapped_type</span><span class="special">;</span>
  260. <span class="keyword">typedef</span> <span class="identifier">signature</span><span class="special">-</span><span class="identifier">compatible</span> <span class="identifier">with</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span> <span class="special">...</span> <span class="special">,</span> <span class="identifier">Left</span> <span class="special">&gt;</span> <span class="identifier">value_type</span><span class="special">;</span>
  261. </pre>
  262. <div class="section">
  263. <div class="titlepage"><div><div><h5 class="title">
  264. <a name="boost_bimap.reference.vector_of_reference.vector_of_views.complexity_signature"></a><a name="vector_of_complexity_signature"></a><a class="link" href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views.complexity_signature" title="Complexity signature">Complexity
  265. signature</a>
  266. </h5></div></div></div>
  267. <p>
  268. Here and in the descriptions of operations of <code class="computeroutput"><span class="identifier">vector_of</span></code>
  269. views, we adopt the scheme outlined in the <a class="link" href="bimap_reference.html#complexity_signature_explanation">complexity
  270. signature section</a>. The complexity signature of <code class="computeroutput"><span class="identifier">vector_of</span></code>
  271. view is:
  272. </p>
  273. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  274. <li class="listitem">
  275. copying: <code class="computeroutput"><span class="identifier">c</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">n</span> <span class="special">*</span> <span class="identifier">log</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span></code>,
  276. </li>
  277. <li class="listitem">
  278. insertion: <code class="computeroutput"><span class="identifier">i</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span> <span class="special">=</span> <span class="number">1</span></code>
  279. (amortized constant),
  280. </li>
  281. <li class="listitem">
  282. hinted insertion: <code class="computeroutput"><span class="identifier">h</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span> <span class="special">=</span> <span class="number">1</span></code> (amortized constant),
  283. </li>
  284. <li class="listitem">
  285. deletion: <code class="computeroutput"><span class="identifier">d</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">m</span></code>,
  286. where m is the distance from the deleted element to the end of the
  287. sequence,
  288. </li>
  289. <li class="listitem">
  290. replacement: <code class="computeroutput"><span class="identifier">r</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span> <span class="special">=</span> <span class="number">1</span></code>
  291. (constant),
  292. </li>
  293. <li class="listitem">
  294. modifying: <code class="computeroutput"><span class="identifier">m</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span> <span class="special">=</span> <span class="number">1</span></code>
  295. (constant).
  296. </li>
  297. </ul></div>
  298. <p>
  299. The following expressions are also used as a convenience for writing
  300. down some of the complexity formulas:
  301. </p>
  302. <div class="blurb">
  303. <div class="titlepage"><div><div><p class="title"><b></b></p></div></div></div>
  304. <p>
  305. <code class="computeroutput"><span class="identifier">shl</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">+</span><span class="identifier">b</span></code>
  306. if a is nonzero, 0 otherwise. <code class="computeroutput"><span class="identifier">rel</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">,</span><span class="identifier">c</span><span class="special">)</span> <span class="special">=</span></code> if
  307. <code class="computeroutput"><span class="identifier">a</span><span class="special">&lt;</span><span class="identifier">b</span></code>, <code class="computeroutput"><span class="identifier">c</span><span class="special">-</span><span class="identifier">a</span></code>,
  308. else <code class="computeroutput"><span class="identifier">a</span><span class="special">-</span><span class="identifier">b</span></code>,
  309. </p>
  310. </div>
  311. <p>
  312. (<code class="computeroutput"><span class="identifier">shl</span></code> and <code class="computeroutput"><span class="identifier">rel</span></code> stand for <span class="emphasis"><em>shift left</em></span>
  313. and <span class="emphasis"><em>relocate</em></span>, respectively.)
  314. </p>
  315. </div>
  316. <div class="section">
  317. <div class="titlepage"><div><div><h5 class="title">
  318. <a name="boost_bimap.reference.vector_of_reference.vector_of_views.instantiation_types"></a><a class="link" href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views.instantiation_types" title="Instantiation types">Instantiation
  319. types</a>
  320. </h5></div></div></div>
  321. <p>
  322. <code class="computeroutput"><span class="identifier">vector_of</span></code> views are instantiated
  323. internally to <code class="computeroutput"><span class="identifier">bimap</span></code> and
  324. specified by means of the collection type specifiers and the bimap itself.
  325. Instantiations are dependent on the following types:
  326. </p>
  327. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  328. <li class="listitem">
  329. <code class="computeroutput"><span class="identifier">Value</span></code> from <code class="computeroutput"><span class="identifier">vector_of</span></code>,
  330. </li>
  331. <li class="listitem">
  332. <code class="computeroutput"><span class="identifier">Allocator</span></code> from <code class="computeroutput"><span class="identifier">bimap</span></code>,
  333. </li>
  334. </ul></div>
  335. </div>
  336. <div class="section">
  337. <div class="titlepage"><div><div><h5 class="title">
  338. <a name="boost_bimap.reference.vector_of_reference.vector_of_views.constructors__copy_and_assignment"></a><a class="link" href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views.constructors__copy_and_assignment" title="Constructors, copy and assignment">Constructors,
  339. copy and assignment</a>
  340. </h5></div></div></div>
  341. <p>
  342. As explained in the views concepts section, views do not have public
  343. constructors or destructors. Assignment, on the other hand, is provided.
  344. </p>
  345. <pre class="programlisting"><span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="keyword">const</span> <span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
  346. </pre>
  347. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  348. <li class="listitem">
  349. <span class="bold"><strong>Effects: </strong></span> <code class="computeroutput"><span class="identifier">a</span><span class="special">=</span><span class="identifier">b</span><span class="special">;</span></code> where a and b are the <code class="computeroutput"><span class="identifier">bimap</span></code> objects to which <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
  350. and <code class="computeroutput"><span class="identifier">x</span></code> belong, respectively.
  351. </li>
  352. <li class="listitem">
  353. <span class="bold"><strong>Returns: </strong></span> <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
  354. </li>
  355. </ul></div>
  356. <a name="reference_vector_of_assign_iterator_iterator"></a><pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">InputIterator</span> <span class="special">&gt;</span>
  357. <span class="keyword">void</span> <span class="identifier">assign</span><span class="special">(</span><span class="identifier">InputIterator</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">InputIterator</span> <span class="identifier">last</span><span class="special">);</span>
  358. </pre>
  359. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  360. <li class="listitem">
  361. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">InputIterator</span></code>
  362. is a model of <a href="https://www.boost.org/sgi/stl/InputIterator.html" target="_top">Input
  363. Iterator</a> over elements of type <code class="computeroutput"><span class="identifier">value_type</span></code>
  364. or a type convertible to <code class="computeroutput"><span class="identifier">value_type</span></code>.
  365. <code class="computeroutput"><span class="identifier">first</span></code> and <code class="computeroutput"><span class="identifier">last</span></code> are not iterators into any
  366. view of the <code class="computeroutput"><span class="identifier">bimap</span></code>
  367. to which this view belongs. <code class="computeroutput"><span class="identifier">last</span></code>
  368. is reachable from <code class="computeroutput"><span class="identifier">first</span></code>.
  369. </li>
  370. <li class="listitem">
  371. <span class="bold"><strong>Effects: </strong></span> <code class="computeroutput"><span class="identifier">clear</span><span class="special">();</span> <span class="identifier">insert</span><span class="special">(</span><span class="identifier">end</span><span class="special">(),</span><span class="identifier">first</span><span class="special">,</span><span class="identifier">last</span><span class="special">);</span></code>
  372. </li>
  373. </ul></div>
  374. <a name="reference_vector_of_assign_size_value"></a><pre class="programlisting"><span class="keyword">void</span> <span class="identifier">assign</span><span class="special">(</span><span class="identifier">size_type</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <span class="identifier">value</span><span class="special">);</span>
  375. </pre>
  376. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
  377. <span class="bold"><strong>Effects: </strong></span> <code class="computeroutput"><span class="identifier">clear</span><span class="special">();</span> <span class="keyword">for</span><span class="special">(</span><span class="identifier">size_type</span>
  378. <span class="identifier">i</span> <span class="special">=</span>
  379. <span class="number">0</span><span class="special">;</span>
  380. <span class="identifier">i</span> <span class="special">&lt;</span>
  381. <span class="identifier">n</span><span class="special">;</span>
  382. <span class="special">++</span><span class="identifier">n</span><span class="special">)</span> <span class="identifier">push_back</span><span class="special">(</span><span class="identifier">v</span><span class="special">);</span></code>
  383. </li></ul></div>
  384. </div>
  385. <div class="section">
  386. <div class="titlepage"><div><div><h5 class="title">
  387. <a name="boost_bimap.reference.vector_of_reference.vector_of_views.capacity_operations"></a><a class="link" href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views.capacity_operations" title="Capacity operations">Capacity
  388. operations</a>
  389. </h5></div></div></div>
  390. <a name="reference_vector_of_capacity"></a><pre class="programlisting"><span class="identifier">size_type</span> <span class="identifier">capacity</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
  391. </pre>
  392. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  393. <li class="listitem">
  394. <span class="bold"><strong>Returns:</strong></span> The total number of elements
  395. <code class="computeroutput"><span class="identifier">c</span></code> such that, when
  396. <code class="computeroutput"><span class="identifier">size</span><span class="special">()</span>
  397. <span class="special">&lt;</span> <span class="identifier">c</span></code>,
  398. back insertions happen in constant time (the general case as described
  399. by i(n) is <span class="emphasis"><em>amortized</em></span> constant time.)
  400. </li>
  401. <li class="listitem">
  402. <span class="bold"><strong>Note:</strong></span> Validity of iterators and
  403. references to elements is preserved in all insertions, regardless
  404. of the capacity status.
  405. </li>
  406. </ul></div>
  407. <a name="reference_vector_of_reserve_size"></a><pre class="programlisting"><span class="keyword">void</span> <span class="identifier">reserve</span><span class="special">(</span><span class="identifier">size_type</span> <span class="identifier">m</span><span class="special">);</span>
  408. </pre>
  409. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  410. <li class="listitem">
  411. <span class="bold"><strong>Effects:</strong></span> If the previous value of
  412. <code class="computeroutput"><span class="identifier">capacity</span><span class="special">()</span></code>
  413. was greater than or equal to <code class="computeroutput"><span class="identifier">m</span></code>,
  414. nothing is done; otherwise, the internal capacity is changed so that
  415. <code class="computeroutput"><span class="identifier">capacity</span><span class="special">()&gt;=</span><span class="identifier">m</span></code>.
  416. </li>
  417. <li class="listitem">
  418. <span class="bold"><strong>Complexity:</strong></span> If the capacity is not
  419. changed, constant; otherwise O(n).
  420. </li>
  421. <li class="listitem">
  422. <span class="bold"><strong>Exception safety:</strong></span> If the capacity
  423. is not changed, nothrow; otherwise, strong.
  424. </li>
  425. </ul></div>
  426. <a name="reference_vector_of_resize_size_value"></a><pre class="programlisting"><span class="keyword">void</span> <span class="identifier">resize</span><span class="special">(</span><span class="identifier">size_type</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <span class="identifier">x</span> <span class="special">=</span> <span class="identifier">value_type</span><span class="special">());</span>
  427. </pre>
  428. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  429. <li class="listitem">
  430. <span class="bold"><strong>Effects: </strong></span> <code class="computeroutput"><span class="keyword">if</span><span class="special">(</span> <span class="identifier">n</span> <span class="special">&gt;</span> <span class="identifier">size</span><span class="special">()</span> <span class="special">)</span> <span class="identifier">insert</span><span class="special">(</span><span class="identifier">end</span><span class="special">(),</span>
  431. <span class="identifier">n</span><span class="special">-</span><span class="identifier">size</span><span class="special">(),</span>
  432. <span class="identifier">x</span><span class="special">);</span></code>
  433. <code class="computeroutput"><span class="keyword">else</span> <span class="keyword">if</span><span class="special">(</span> <span class="identifier">n</span><span class="special">&lt;</span><span class="identifier">size</span><span class="special">()</span> <span class="special">)</span> <span class="identifier">erase</span><span class="special">(</span><span class="identifier">begin</span><span class="special">()+</span><span class="identifier">n</span><span class="special">,</span><span class="identifier">end</span><span class="special">());</span></code>
  434. </li>
  435. <li class="listitem">
  436. <span class="bold"><strong>Note:</strong></span> If an expansion is requested,
  437. the size of the view is not guaranteed to be n after this operation
  438. (other views may ban insertions.)
  439. </li>
  440. </ul></div>
  441. </div>
  442. <div class="section">
  443. <div class="titlepage"><div><div><h5 class="title">
  444. <a name="boost_bimap.reference.vector_of_reference.vector_of_views.modifiers"></a><a class="link" href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views.modifiers" title="Modifiers">Modifiers</a>
  445. </h5></div></div></div>
  446. <a name="reference_vector_of_push_front_value"></a><pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">iterator</span><span class="special">,</span><span class="keyword">bool</span><span class="special">&gt;</span> <span class="identifier">push_front</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
  447. </pre>
  448. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  449. <li class="listitem">
  450. <span class="bold"><strong>Effects:</strong></span> Inserts x at the beginning
  451. of the sequence if no other view of the <code class="computeroutput"><span class="identifier">bimap</span></code>
  452. bans the insertion.
  453. </li>
  454. <li class="listitem">
  455. <span class="bold"><strong>Returns:</strong></span> The return value is a pair
  456. <code class="computeroutput"><span class="identifier">p</span></code>. <code class="computeroutput"><span class="identifier">p</span><span class="special">.</span><span class="identifier">second</span></code> is <code class="computeroutput"><span class="keyword">true</span></code>
  457. if and only if insertion took place. On successful insertion, <code class="computeroutput"><span class="identifier">p</span><span class="special">.</span><span class="identifier">first</span></code> points to the element inserted;
  458. otherwise, <code class="computeroutput"><span class="identifier">p</span><span class="special">.</span><span class="identifier">first</span></code> points to an element that
  459. caused the insertion to be banned. Note that more than one element
  460. can be causing insertion not to be allowed.
  461. </li>
  462. <li class="listitem">
  463. <a class="link" href="vector_of_reference.html#vector_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  464. O(n+I(n)).
  465. </li>
  466. <li class="listitem">
  467. <span class="bold"><strong>Exception safety:</strong></span> Strong.
  468. </li>
  469. </ul></div>
  470. <a name="reference_vector_of_push_back_value"></a><pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">iterator</span><span class="special">,</span><span class="keyword">bool</span><span class="special">&gt;</span> <span class="identifier">push_back</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
  471. </pre>
  472. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  473. <li class="listitem">
  474. <span class="bold"><strong>Effects:</strong></span> Inserts <code class="computeroutput"><span class="identifier">x</span></code>
  475. at the end of the sequence if no other view of the <code class="computeroutput"><span class="identifier">bimap</span></code> bans the insertion.
  476. </li>
  477. <li class="listitem">
  478. <span class="bold"><strong>Returns:</strong></span> The return value is a pair
  479. <code class="computeroutput"><span class="identifier">p</span></code>. <code class="computeroutput"><span class="identifier">p</span><span class="special">.</span><span class="identifier">second</span></code> is <code class="computeroutput"><span class="keyword">true</span></code>
  480. if and only if insertion took place. On successful insertion, <code class="computeroutput"><span class="identifier">p</span><span class="special">.</span><span class="identifier">first</span></code> points to the element inserted;
  481. otherwise, <code class="computeroutput"><span class="identifier">p</span><span class="special">.</span><span class="identifier">first</span></code> points to an element that
  482. caused the insertion to be banned. Note that more than one element
  483. can be causing insertion not to be allowed.
  484. </li>
  485. <li class="listitem">
  486. <a class="link" href="vector_of_reference.html#vector_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  487. O(I(n)).
  488. </li>
  489. <li class="listitem">
  490. <span class="bold"><strong>Exception safety:</strong></span> Strong.
  491. </li>
  492. </ul></div>
  493. <a name="reference_vector_of_insert_iterator_value"></a><pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">iterator</span><span class="special">,</span><span class="keyword">bool</span><span class="special">&gt;</span> <span class="identifier">insert</span><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
  494. </pre>
  495. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  496. <li class="listitem">
  497. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">position</span></code>
  498. is a valid iterator of the view.
  499. </li>
  500. <li class="listitem">
  501. <span class="bold"><strong>Effects:</strong></span> Inserts <code class="computeroutput"><span class="identifier">x</span></code>
  502. before position if insertion is allowed by all other views of the
  503. <code class="computeroutput"><span class="identifier">bimap</span></code>.
  504. </li>
  505. <li class="listitem">
  506. <span class="bold"><strong>Returns:</strong></span> The return value is a pair
  507. <code class="computeroutput"><span class="identifier">p</span></code>. <code class="computeroutput"><span class="identifier">p</span><span class="special">.</span><span class="identifier">second</span></code> is <code class="computeroutput"><span class="keyword">true</span></code>
  508. if and only if insertion took place. On successful insertion, <code class="computeroutput"><span class="identifier">p</span><span class="special">.</span><span class="identifier">first</span></code> points to the element inserted;
  509. otherwise, <code class="computeroutput"><span class="identifier">p</span><span class="special">.</span><span class="identifier">first</span></code> points to an element that
  510. caused the insertion to be banned. Note that more than one element
  511. can be causing insertion not to be allowed.
  512. </li>
  513. <li class="listitem">
  514. <a class="link" href="vector_of_reference.html#vector_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  515. O(shl(end()-position,1) + I(n)).
  516. </li>
  517. <li class="listitem">
  518. <span class="bold"><strong>Exception safety:</strong></span> Strong.
  519. </li>
  520. </ul></div>
  521. <a name="reference_vector_of_insert_iterator_size_value"></a><pre class="programlisting"><span class="keyword">void</span> <span class="identifier">insert</span><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="identifier">size_type</span> <span class="identifier">m</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
  522. </pre>
  523. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  524. <li class="listitem">
  525. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">position</span></code>
  526. is a valid iterator of the view.
  527. </li>
  528. <li class="listitem">
  529. <span class="bold"><strong>Effects: </strong></span> <code class="computeroutput"><span class="keyword">for</span><span class="special">(</span><span class="identifier">size_type</span>
  530. <span class="identifier">i</span> <span class="special">=</span>
  531. <span class="number">0</span><span class="special">;</span>
  532. <span class="identifier">i</span> <span class="special">&lt;</span>
  533. <span class="identifier">m</span><span class="special">;</span>
  534. <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="identifier">insert</span><span class="special">(</span><span class="identifier">position</span><span class="special">,</span> <span class="identifier">x</span><span class="special">);</span></code>
  535. </li>
  536. <li class="listitem">
  537. <a class="link" href="vector_of_reference.html#vector_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  538. O(shl(end()-position,m) + m*I(n+m)).
  539. </li>
  540. </ul></div>
  541. <a name="reference_vector_of_insert_iterator_iterator_iterator"></a><pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">InputIterator</span> <span class="special">&gt;</span>
  542. <span class="keyword">void</span> <span class="identifier">insert</span><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="identifier">InputIterator</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">InputIterator</span> <span class="identifier">last</span><span class="special">);</span>
  543. </pre>
  544. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  545. <li class="listitem">
  546. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">position</span></code>
  547. is a valid iterator of the view. <code class="computeroutput"><span class="identifier">InputIterator</span></code>
  548. is a model of <a href="https://www.boost.org/sgi/stl/InputIterator.html" target="_top">Input
  549. Iterator</a> over elements of type <code class="computeroutput"><span class="identifier">value_type</span></code>
  550. or a type convertible to <code class="computeroutput"><span class="identifier">value_type</span></code>.
  551. <code class="computeroutput"><span class="identifier">first</span></code> and <code class="computeroutput"><span class="identifier">last</span></code> are not iterators into any
  552. view of the <code class="computeroutput"><span class="identifier">bimap</span></code>
  553. to which this view belongs. <code class="computeroutput"><span class="identifier">last</span></code>
  554. is reachable from <code class="computeroutput"><span class="identifier">first</span></code>.
  555. </li>
  556. <li class="listitem">
  557. <span class="bold"><strong>Effects: </strong></span> <code class="computeroutput"><span class="keyword">while</span><span class="special">(</span><span class="identifier">first</span><span class="special">!=</span><span class="identifier">last</span><span class="special">)</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">position</span><span class="special">,*</span><span class="identifier">first</span><span class="special">++);</span></code>
  558. </li>
  559. <li class="listitem">
  560. <a class="link" href="vector_of_reference.html#vector_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  561. O(shl(end()-position,m) + m*I(n+m)), where m is the number of elements
  562. in <code class="computeroutput"><span class="special">[</span><span class="identifier">first</span><span class="special">,</span><span class="identifier">last</span><span class="special">)</span></code>.
  563. </li>
  564. <li class="listitem">
  565. <span class="bold"><strong>Exception safety:</strong></span> Basic.
  566. </li>
  567. </ul></div>
  568. <a name="reference_vector_of_erase_iterator"></a><pre class="programlisting"><span class="identifier">iterator</span> <span class="identifier">erase</span><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">);</span>
  569. </pre>
  570. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  571. <li class="listitem">
  572. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">position</span></code>
  573. is a valid dereferenceable iterator of the view.
  574. </li>
  575. <li class="listitem">
  576. <span class="bold"><strong>Effects:</strong></span> Deletes the element pointed
  577. to by <code class="computeroutput"><span class="identifier">position</span></code>.
  578. </li>
  579. <li class="listitem">
  580. <span class="bold"><strong>Returns:</strong></span> An iterator pointing to
  581. the element immediately following the one that was deleted, or <code class="computeroutput"><span class="identifier">end</span><span class="special">()</span></code>
  582. if no such element exists.
  583. </li>
  584. <li class="listitem">
  585. <a class="link" href="vector_of_reference.html#vector_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  586. O(D(n)).
  587. </li>
  588. <li class="listitem">
  589. <span class="bold"><strong>Exception safety:</strong></span> nothrow.
  590. </li>
  591. </ul></div>
  592. <a name="reference_vector_of_erase_iterator_iterator"></a><pre class="programlisting"><span class="identifier">iterator</span> <span class="identifier">erase</span><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">iterator</span> <span class="identifier">last</span><span class="special">);</span>
  593. </pre>
  594. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  595. <li class="listitem">
  596. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="special">[</span><span class="identifier">first</span><span class="special">,</span><span class="identifier">last</span><span class="special">)</span></code>
  597. is a valid range of the view.
  598. </li>
  599. <li class="listitem">
  600. <span class="bold"><strong>Effects:</strong></span> Deletes the elements in
  601. <code class="computeroutput"><span class="special">[</span><span class="identifier">first</span><span class="special">,</span><span class="identifier">last</span><span class="special">)</span></code>.
  602. </li>
  603. <li class="listitem">
  604. <span class="bold"><strong>Returns:</strong></span> last.
  605. </li>
  606. <li class="listitem">
  607. <a class="link" href="vector_of_reference.html#vector_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  608. O(m*D(n)), where m is the number of elements in <code class="computeroutput"><span class="special">[</span><span class="identifier">first</span><span class="special">,</span><span class="identifier">last</span><span class="special">)</span></code>.
  609. </li>
  610. <li class="listitem">
  611. <span class="bold"><strong>Exception safety:</strong></span> nothrow.
  612. </li>
  613. </ul></div>
  614. <a name="reference_vector_of_replace_iterator_value"></a><pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">replace</span><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
  615. </pre>
  616. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  617. <li class="listitem">
  618. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">position</span></code>
  619. is a valid dereferenceable iterator of the view.
  620. </li>
  621. <li class="listitem">
  622. <span class="bold"><strong>Effects:</strong></span> Assigns the value x to
  623. the element pointed to by position into the <code class="computeroutput"><span class="identifier">bimap</span></code>
  624. to which the view belongs if replacing is allowed by all other views
  625. of the <code class="computeroutput"><span class="identifier">bimap</span></code>.
  626. </li>
  627. <li class="listitem">
  628. <span class="bold"><strong>Postconditions:</strong></span> Validity of position
  629. is preserved in all cases.
  630. </li>
  631. <li class="listitem">
  632. <span class="bold"><strong>Returns: </strong></span> <code class="computeroutput"><span class="keyword">true</span></code>
  633. if the replacement took place, <code class="computeroutput"><span class="keyword">false</span></code>
  634. otherwise.
  635. </li>
  636. <li class="listitem">
  637. <a class="link" href="vector_of_reference.html#vector_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  638. O(R(n)).
  639. </li>
  640. <li class="listitem">
  641. <span class="bold"><strong>Exception safety:</strong></span> Strong. If an
  642. exception is thrown by some user-provided operation the <code class="computeroutput"><span class="identifier">bimap</span></code> to which the view belongs
  643. remains in its original state.
  644. </li>
  645. </ul></div>
  646. <a name="reference_vector_of_replace_key_iterator_key"></a><pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">CompatibleKey</span> <span class="special">&gt;</span>
  647. <span class="keyword">bool</span> <span class="identifier">replace_key</span><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">CompatibleKey</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
  648. </pre>
  649. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  650. <li class="listitem">
  651. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">position</span></code>
  652. is a valid dereferenceable iterator of the set view. <code class="computeroutput"><span class="identifier">CompatibleKey</span></code> can be assigned to
  653. <code class="computeroutput"><span class="identifier">key_type</span></code>.
  654. </li>
  655. <li class="listitem">
  656. <span class="bold"><strong>Effects:</strong></span> Assigns the value <code class="computeroutput"><span class="identifier">x</span></code> to <code class="computeroutput"><span class="identifier">e</span><span class="special">.</span><span class="identifier">first</span></code>,
  657. where <code class="computeroutput"><span class="identifier">e</span></code> is the element
  658. pointed to by <code class="computeroutput"><span class="identifier">position</span></code>
  659. into the <code class="computeroutput"><span class="identifier">bimap</span></code> to
  660. which the set view belongs if replacing is allowed by all other views
  661. of the <code class="computeroutput"><span class="identifier">bimap</span></code>.
  662. </li>
  663. <li class="listitem">
  664. <span class="bold"><strong>Postconditions:</strong></span> Validity of position
  665. is preserved in all cases.
  666. </li>
  667. <li class="listitem">
  668. <span class="bold"><strong>Returns: </strong></span> <code class="computeroutput"><span class="keyword">true</span></code>
  669. if the replacement took place, <code class="computeroutput"><span class="keyword">false</span></code>
  670. otherwise.
  671. </li>
  672. <li class="listitem">
  673. <a class="link" href="vector_of_reference.html#vector_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  674. O(R(n)).
  675. </li>
  676. <li class="listitem">
  677. <span class="bold"><strong>Exception safety:</strong></span> Strong. If an
  678. exception is thrown by some user-provided operation, the <code class="computeroutput"><span class="identifier">bimap</span></code> to which the set view belongs
  679. remains in its original state.
  680. </li>
  681. </ul></div>
  682. <a name="reference_vector_of_replace_data_iterator_data"></a><pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">CompatibleData</span> <span class="special">&gt;</span>
  683. <span class="keyword">bool</span> <span class="identifier">replace_data</span><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">CompatibleData</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
  684. </pre>
  685. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  686. <li class="listitem">
  687. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">position</span></code>
  688. is a valid dereferenceable iterator of the set view. <code class="computeroutput"><span class="identifier">CompatibleKey</span></code> can be assigned to
  689. <code class="computeroutput"><span class="identifier">mapped_type</span></code>.
  690. </li>
  691. <li class="listitem">
  692. <span class="bold"><strong>Effects:</strong></span> Assigns the value <code class="computeroutput"><span class="identifier">x</span></code> to <code class="computeroutput"><span class="identifier">e</span><span class="special">.</span><span class="identifier">second</span></code>,
  693. where <code class="computeroutput"><span class="identifier">e</span></code> is the element
  694. pointed to by <code class="computeroutput"><span class="identifier">position</span></code>
  695. into the <code class="computeroutput"><span class="identifier">bimap</span></code> to
  696. which the set view belongs if replacing is allowed by all other views
  697. of the <code class="computeroutput"><span class="identifier">bimap</span></code>.
  698. </li>
  699. <li class="listitem">
  700. <span class="bold"><strong>Postconditions:</strong></span> Validity of position
  701. is preserved in all cases.
  702. </li>
  703. <li class="listitem">
  704. <span class="bold"><strong>Returns: </strong></span> <code class="computeroutput"><span class="keyword">true</span></code>
  705. if the replacement took place, <code class="computeroutput"><span class="keyword">false</span></code>
  706. otherwise.
  707. </li>
  708. <li class="listitem">
  709. <a class="link" href="vector_of_reference.html#vector_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  710. O(R(n)).
  711. </li>
  712. <li class="listitem">
  713. <span class="bold"><strong>Exception safety:</strong></span> Strong. If an
  714. exception is thrown by some user-provided operation, the <code class="computeroutput"><span class="identifier">bimap</span></code> to which the set view belongs
  715. remains in its original state.
  716. </li>
  717. </ul></div>
  718. <a name="reference_vector_of_modify_key_iterator_modifier"></a><pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">KeyModifier</span> <span class="special">&gt;</span>
  719. <span class="keyword">bool</span> <span class="identifier">modify_key</span><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="identifier">KeyModifier</span> <span class="identifier">mod</span><span class="special">);</span>
  720. </pre>
  721. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  722. <li class="listitem">
  723. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">KeyModifier</span></code>
  724. is a model of <a href="https://www.boost.org/sgi/stl/UnaryFunction.html" target="_top">Unary
  725. Function</a> accepting arguments of type: <code class="computeroutput"><span class="identifier">key_type</span><span class="special">&amp;</span></code>; <code class="computeroutput"><span class="identifier">position</span></code>
  726. is a valid dereferenceable iterator of the view.
  727. </li>
  728. <li class="listitem">
  729. <span class="bold"><strong>Effects:</strong></span> Calls <code class="computeroutput"><span class="identifier">mod</span><span class="special">(</span><span class="identifier">e</span><span class="special">.</span><span class="identifier">first</span><span class="special">)</span></code> where e is the element pointed to
  730. by position and rearranges <code class="computeroutput"><span class="special">*</span><span class="identifier">position</span></code> into all the views of
  731. the <code class="computeroutput"><span class="identifier">bimap</span></code>. If the
  732. rearrangement fails, the element is erased. It is successful if the
  733. rearrangement is allowed by all other views of the <code class="computeroutput"><span class="identifier">bimap</span></code>.
  734. </li>
  735. <li class="listitem">
  736. <span class="bold"><strong>Postconditions:</strong></span> Validity of <code class="computeroutput"><span class="identifier">position</span></code> is preserved if the operation
  737. succeeds.
  738. </li>
  739. <li class="listitem">
  740. <span class="bold"><strong>Returns: </strong></span> <code class="computeroutput"><span class="keyword">true</span></code>
  741. if the operation succeeded, <code class="computeroutput"><span class="keyword">false</span></code>
  742. otherwise.
  743. </li>
  744. <li class="listitem">
  745. <a class="link" href="vector_of_reference.html#vector_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  746. O(M(n)).
  747. </li>
  748. <li class="listitem">
  749. <span class="bold"><strong>Exception safety:</strong></span> Basic. If an exception
  750. is thrown by some user-provided operation (except possibly mod),
  751. then the element pointed to by position is erased.
  752. </li>
  753. <li class="listitem">
  754. <span class="bold"><strong>Note:</strong></span> Only provided for map views.
  755. </li>
  756. </ul></div>
  757. <a name="reference_vector_of_modify_data_iterator_modifier"></a><pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">DataModifier</span> <span class="special">&gt;</span>
  758. <span class="keyword">bool</span> <span class="identifier">modify_data</span><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="identifier">DataModifier</span> <span class="identifier">mod</span><span class="special">);</span>
  759. </pre>
  760. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  761. <li class="listitem">
  762. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">DataModifier</span></code>
  763. is a model of <a href="https://www.boost.org/sgi/stl/UnaryFunction.html" target="_top">Unary
  764. Function</a> accepting arguments of type: <code class="computeroutput"><span class="identifier">mapped_type</span><span class="special">&amp;</span></code>; <code class="computeroutput"><span class="identifier">position</span></code>
  765. is a valid dereferenceable iterator of the view.
  766. </li>
  767. <li class="listitem">
  768. <span class="bold"><strong>Effects:</strong></span> Calls <code class="computeroutput"><span class="identifier">mod</span><span class="special">(</span><span class="identifier">e</span><span class="special">.</span><span class="identifier">second</span><span class="special">)</span></code> where e is the element pointed to
  769. by position and rearranges <code class="computeroutput"><span class="special">*</span><span class="identifier">position</span></code> into all the views of
  770. the <code class="computeroutput"><span class="identifier">bimap</span></code>. If the
  771. rearrangement fails, the element is erased. It is successful if the
  772. rearrangement is allowed by all other views of the <code class="computeroutput"><span class="identifier">bimap</span></code>.
  773. </li>
  774. <li class="listitem">
  775. <span class="bold"><strong>Postconditions:</strong></span> Validity of <code class="computeroutput"><span class="identifier">position</span></code> is preserved if the operation
  776. succeeds.
  777. </li>
  778. <li class="listitem">
  779. <span class="bold"><strong>Returns: </strong></span> <code class="computeroutput"><span class="keyword">true</span></code>
  780. if the operation succeeded, <code class="computeroutput"><span class="keyword">false</span></code>
  781. otherwise.
  782. </li>
  783. <li class="listitem">
  784. <a class="link" href="vector_of_reference.html#vector_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  785. O(M(n)).
  786. </li>
  787. <li class="listitem">
  788. <span class="bold"><strong>Exception safety:</strong></span> Basic. If an exception
  789. is thrown by some user-provided operation (except possibly mod),
  790. then the element pointed to by position is erased.
  791. </li>
  792. <li class="listitem">
  793. <span class="bold"><strong>Note:</strong></span> Only provided for map views.
  794. </li>
  795. </ul></div>
  796. </div>
  797. <div class="section">
  798. <div class="titlepage"><div><div><h5 class="title">
  799. <a name="boost_bimap.reference.vector_of_reference.vector_of_views.list_operations"></a><a class="link" href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views.list_operations" title="List operations">List
  800. operations</a>
  801. </h5></div></div></div>
  802. <p>
  803. <code class="computeroutput"><span class="identifier">vector_of</span></code> views replicate
  804. the interface of <code class="computeroutput"><span class="identifier">list_of</span></code>
  805. views, which in turn includes the list operations provided by <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">list</span></code>. The syntax and behavior of these
  806. operations exactly matches those of <code class="computeroutput"><span class="identifier">list_of</span></code>
  807. views, but the associated complexity bounds differ in general.
  808. </p>
  809. <a name="reference_vector_of_splice_iterator_this"></a><pre class="programlisting"><span class="keyword">void</span> <span class="identifier">splice</span><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
  810. </pre>
  811. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  812. <li class="listitem">
  813. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">position</span></code>
  814. is a valid iterator of the view. <code class="computeroutput"><span class="special">&amp;</span><span class="identifier">x</span><span class="special">!=</span><span class="keyword">this</span></code>.
  815. </li>
  816. <li class="listitem">
  817. <span class="bold"><strong>Effects:</strong></span> Inserts the contents of
  818. <code class="computeroutput"><span class="identifier">x</span></code> before position,
  819. in the same order as they were in <code class="computeroutput"><span class="identifier">x</span></code>.
  820. Those elements successfully inserted are erased from <code class="computeroutput"><span class="identifier">x</span></code>.
  821. </li>
  822. <li class="listitem">
  823. <a class="link" href="vector_of_reference.html#vector_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  824. O(shl(end()-position,x.size()) + x.size()*I(n+x.size()) + x.size()*D(x.size())).
  825. </li>
  826. <li class="listitem">
  827. <span class="bold"><strong>Exception safety:</strong></span> Basic.
  828. </li>
  829. </ul></div>
  830. <a name="reference_vector_of_splice_iterator_this_iterator"></a><pre class="programlisting"><span class="keyword">void</span> <span class="identifier">splice</span><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">,</span><span class="identifier">iterator</span> <span class="identifier">i</span><span class="special">);</span>
  831. </pre>
  832. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  833. <li class="listitem">
  834. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">position</span></code>
  835. is a valid iterator of the view. <code class="computeroutput"><span class="identifier">i</span></code>
  836. is a valid dereferenceable iterator <code class="computeroutput"><span class="identifier">x</span></code>.
  837. </li>
  838. <li class="listitem">
  839. <span class="bold"><strong>Effects:</strong></span> Inserts the element pointed
  840. to by <code class="computeroutput"><span class="identifier">i</span></code> before <code class="computeroutput"><span class="identifier">position</span></code>: if insertion is successful,
  841. the element is erased from <code class="computeroutput"><span class="identifier">x</span></code>.
  842. In the special case <code class="computeroutput"><span class="special">&amp;</span><span class="identifier">x</span><span class="special">==</span><span class="keyword">this</span></code>, no copy or deletion is performed,
  843. and the operation is always successful. If <code class="computeroutput"><span class="identifier">position</span><span class="special">==</span><span class="identifier">i</span></code>,
  844. no operation is performed.
  845. </li>
  846. <li class="listitem">
  847. <span class="bold"><strong>Postconditions:</strong></span> If <code class="computeroutput"><span class="special">&amp;</span><span class="identifier">x</span><span class="special">==</span><span class="keyword">this</span></code>,
  848. no iterator or reference is invalidated.
  849. </li>
  850. <li class="listitem">
  851. <a class="link" href="vector_of_reference.html#vector_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  852. If <code class="computeroutput"><span class="special">&amp;</span><span class="identifier">x</span><span class="special">==</span><span class="keyword">this</span></code>,
  853. O(rel(position,i,i+1)); otherwise O(shl(end()-position,1) + I(n)
  854. + D(n)).
  855. </li>
  856. <li class="listitem">
  857. <span class="bold"><strong>Exception safety:</strong></span> If <code class="computeroutput"><span class="special">&amp;</span><span class="identifier">x</span><span class="special">==</span><span class="keyword">this</span></code>,
  858. nothrow; otherwise, strong.
  859. </li>
  860. </ul></div>
  861. <a name="reference_vector_of_splice_iterator_this_iterator_iterator"></a><pre class="programlisting"><span class="keyword">void</span> <span class="identifier">splice</span><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">iterator</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">iterator</span> <span class="identifier">last</span><span class="special">);</span>
  862. </pre>
  863. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  864. <li class="listitem">
  865. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">position</span></code>
  866. is a valid iterator of the view. <code class="computeroutput"><span class="identifier">first</span></code>
  867. and <code class="computeroutput"><span class="identifier">last</span></code> are valid
  868. iterators of <code class="computeroutput"><span class="identifier">x</span></code>.
  869. <code class="computeroutput"><span class="identifier">last</span></code> is reachable
  870. from <code class="computeroutput"><span class="identifier">first</span></code>. <code class="computeroutput"><span class="identifier">position</span></code> is not in the range <code class="computeroutput"><span class="special">[</span><span class="identifier">first</span><span class="special">,</span><span class="identifier">last</span><span class="special">)</span></code>.
  871. </li>
  872. <li class="listitem">
  873. <span class="bold"><strong>Effects:</strong></span> For each element in the
  874. range <code class="computeroutput"><span class="special">[</span><span class="identifier">first</span><span class="special">,</span><span class="identifier">last</span><span class="special">)</span></code>, insertion is tried before <code class="computeroutput"><span class="identifier">position</span></code>; if the operation is successful,
  875. the element is erased from <code class="computeroutput"><span class="identifier">x</span></code>.
  876. In the special case <code class="computeroutput"><span class="special">&amp;</span><span class="identifier">x</span><span class="special">==</span><span class="keyword">this</span></code>, no copy or deletion is performed,
  877. and insertions are always successful.
  878. </li>
  879. <li class="listitem">
  880. <span class="bold"><strong>Postconditions:</strong></span> If <code class="computeroutput"><span class="special">&amp;</span><span class="identifier">x</span><span class="special">==</span><span class="keyword">this</span></code>,
  881. no iterator or reference is invalidated.
  882. </li>
  883. <li class="listitem">
  884. <a class="link" href="vector_of_reference.html#vector_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  885. If <code class="computeroutput"><span class="special">&amp;</span><span class="identifier">x</span><span class="special">==</span><span class="keyword">this</span></code>,
  886. O(rel(position,first,last)); otherwise O(shl(end()-position,m) +
  887. m*I(n+m) + m*D(x.size())) where m is the number of elements in <code class="computeroutput"><span class="special">[</span><span class="identifier">first</span><span class="special">,</span><span class="identifier">last</span><span class="special">)</span></code>.
  888. </li>
  889. <li class="listitem">
  890. <span class="bold"><strong>Exception safety:</strong></span> If <code class="computeroutput"><span class="special">&amp;</span><span class="identifier">x</span><span class="special">==</span><span class="keyword">this</span></code>,
  891. nothrow; otherwise, basic.
  892. </li>
  893. </ul></div>
  894. <a name="reference_vector_of_remove_value"></a><pre class="programlisting"><span class="keyword">void</span> <span class="identifier">remove</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <span class="identifier">value</span><span class="special">);</span>
  895. </pre>
  896. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  897. <li class="listitem">
  898. <span class="bold"><strong>Effects:</strong></span> Erases all elements of
  899. the view which compare equal to <code class="computeroutput"><span class="identifier">value</span></code>.
  900. </li>
  901. <li class="listitem">
  902. <a class="link" href="vector_of_reference.html#vector_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  903. O(n + m*D(n)), where m is the number of elements erased.
  904. </li>
  905. <li class="listitem">
  906. <span class="bold"><strong>Exception safety:</strong></span> Basic.
  907. </li>
  908. </ul></div>
  909. <a name="reference_vector_of_remove_if_predicate"></a><pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">Predicate</span> <span class="special">&gt;</span>
  910. <span class="keyword">void</span> <span class="identifier">remove_if</span><span class="special">(</span><span class="identifier">Predicate</span> <span class="identifier">pred</span><span class="special">);</span>
  911. </pre>
  912. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  913. <li class="listitem">
  914. <span class="bold"><strong>Effects:</strong></span> Erases all elements <code class="computeroutput"><span class="identifier">x</span></code> of the view for which <code class="computeroutput"><span class="identifier">pred</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span></code>
  915. holds.
  916. </li>
  917. <li class="listitem">
  918. <a class="link" href="vector_of_reference.html#vector_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  919. O(n + m*D(n)), where m is the number of elements erased.
  920. </li>
  921. <li class="listitem">
  922. <span class="bold"><strong>Exception safety:</strong></span> Basic.
  923. </li>
  924. </ul></div>
  925. <a name="reference_vector_of_unique"></a><pre class="programlisting"><span class="keyword">void</span> <span class="identifier">unique</span><span class="special">();</span>
  926. </pre>
  927. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  928. <li class="listitem">
  929. <span class="bold"><strong>Effects:</strong></span> Eliminates all but the
  930. first element from every consecutive group of equal elements referred
  931. to by the iterator <code class="computeroutput"><span class="identifier">i</span></code>
  932. in the range <code class="computeroutput"><span class="special">[</span><span class="identifier">first</span><span class="special">+</span><span class="number">1</span><span class="special">,</span><span class="identifier">last</span><span class="special">)</span></code> for which <code class="computeroutput"><span class="special">*</span><span class="identifier">i</span><span class="special">==*(</span><span class="identifier">i</span><span class="special">-</span><span class="number">1</span><span class="special">)</span></code>.
  933. </li>
  934. <li class="listitem">
  935. <a class="link" href="vector_of_reference.html#vector_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  936. O(n + m*D(n)), where m is the number of elements erased.
  937. </li>
  938. <li class="listitem">
  939. <span class="bold"><strong>Exception safety:</strong></span> Basic.
  940. </li>
  941. </ul></div>
  942. <a name="reference_vector_of_unique_predicate"></a><pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">BinaryPredicate</span> <span class="special">&gt;</span>
  943. <span class="keyword">void</span> <span class="identifier">unique</span><span class="special">(</span><span class="identifier">BinaryPredicate</span> <span class="identifier">binary_pred</span><span class="special">);</span>
  944. </pre>
  945. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  946. <li class="listitem">
  947. <span class="bold"><strong>Effects:</strong></span> Eliminates all but the
  948. first element from every consecutive group of elements referred to
  949. by the iterator i in the range <code class="computeroutput"><span class="special">[</span><span class="identifier">first</span><span class="special">+</span><span class="number">1</span><span class="special">,</span><span class="identifier">last</span><span class="special">)</span></code>
  950. for which <code class="computeroutput"><span class="identifier">binary_pred</span><span class="special">(*</span><span class="identifier">i</span><span class="special">,</span> <span class="special">*(</span><span class="identifier">i</span><span class="special">-</span><span class="number">1</span><span class="special">))</span></code>
  951. holds.
  952. </li>
  953. <li class="listitem">
  954. <a class="link" href="vector_of_reference.html#vector_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  955. O(n + m*D(n)), where m is the number of elements erased.
  956. </li>
  957. <li class="listitem">
  958. <span class="bold"><strong>Exception safety:</strong></span> Basic.
  959. </li>
  960. </ul></div>
  961. <a name="reference_vector_of_merge_this"></a><pre class="programlisting"><span class="keyword">void</span> <span class="identifier">merge</span><span class="special">(</span><span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
  962. </pre>
  963. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  964. <li class="listitem">
  965. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">less</span><span class="special">&lt;</span><span class="identifier">value_type</span><span class="special">&gt;</span></code> is a <a href="https://www.boost.org/sgi/stl/StrictWeakOrdering.html" target="_top">Strict
  966. Weak Ordering</a> over <code class="computeroutput"><span class="identifier">value_type</span></code>.
  967. Both the view and <code class="computeroutput"><span class="identifier">x</span></code>
  968. are sorted according to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">less</span><span class="special">&lt;</span><span class="identifier">value_type</span><span class="special">&gt;</span></code>.
  969. </li>
  970. <li class="listitem">
  971. <span class="bold"><strong>Effects:</strong></span> Attempts to insert every
  972. element of x into the corresponding position of the view (according
  973. to the order). Elements successfully inserted are erased from <code class="computeroutput"><span class="identifier">x</span></code>. The resulting sequence is stable,
  974. i.e. equivalent elements of either container preserve their relative
  975. position. In the special case <code class="computeroutput"><span class="special">&amp;</span><span class="identifier">x</span><span class="special">==</span><span class="keyword">this</span></code>, no operation is performed.
  976. </li>
  977. <li class="listitem">
  978. <span class="bold"><strong>Postconditions:</strong></span> Elements in the
  979. view and remaining elements in <code class="computeroutput"><span class="identifier">x</span></code>
  980. are sorted. Validity of iterators to the view and of non-erased elements
  981. of <code class="computeroutput"><span class="identifier">x</span></code> references is
  982. preserved.
  983. </li>
  984. <li class="listitem">
  985. <a class="link" href="vector_of_reference.html#vector_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  986. If <code class="computeroutput"><span class="special">&amp;</span><span class="identifier">x</span><span class="special">==</span><span class="keyword">this</span></code>,
  987. constant; otherwise O(n + x.size()*I(n+x.size()) + x.size()*D(x.size())).
  988. </li>
  989. <li class="listitem">
  990. <span class="bold"><strong>Exception safety:</strong></span> If <code class="computeroutput"><span class="special">&amp;</span><span class="identifier">x</span><span class="special">==</span><span class="keyword">this</span></code>,
  991. nothrow; otherwise, basic.
  992. </li>
  993. </ul></div>
  994. <a name="reference_vector_of_merge_this_compare"></a><pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">Compare</span> <span class="special">&gt;</span>
  995. <span class="keyword">void</span> <span class="identifier">merge</span><span class="special">(</span><span class="identifier">this_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">Compare</span> <span class="identifier">comp</span><span class="special">);</span>
  996. </pre>
  997. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  998. <li class="listitem">
  999. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">Compare</span></code>
  1000. is a <a href="https://www.boost.org/sgi/stl/StrictWeakOrdering.html" target="_top">Strict
  1001. Weak Ordering</a> over <code class="computeroutput"><span class="identifier">value_type</span></code>.
  1002. Both the view and <code class="computeroutput"><span class="identifier">x</span></code>
  1003. are sorted according to comp.
  1004. </li>
  1005. <li class="listitem">
  1006. <span class="bold"><strong>Effects:</strong></span> Attempts to insert every
  1007. element of <code class="computeroutput"><span class="identifier">x</span></code> into
  1008. the corresponding position of the view (according to <code class="computeroutput"><span class="identifier">comp</span></code>). Elements successfully inserted
  1009. are erased from <code class="computeroutput"><span class="identifier">x</span></code>.
  1010. The resulting sequence is stable, i.e. equivalent elements of either
  1011. container preserve their relative position. In the special case
  1012. <code class="computeroutput"><span class="special">&amp;</span><span class="identifier">x</span><span class="special">==</span><span class="keyword">this</span></code>,
  1013. no operation is performed.
  1014. </li>
  1015. <li class="listitem">
  1016. <span class="bold"><strong>Postconditions:</strong></span> Elements in the
  1017. view and remaining elements in <code class="computeroutput"><span class="identifier">x</span></code>
  1018. are sorted according to <code class="computeroutput"><span class="identifier">comp</span></code>.
  1019. Validity of iterators to the view and of non-erased elements of
  1020. <code class="computeroutput"><span class="identifier">x</span></code> references is preserved.
  1021. </li>
  1022. <li class="listitem">
  1023. <a class="link" href="vector_of_reference.html#vector_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  1024. If <code class="computeroutput"><span class="special">&amp;</span><span class="identifier">x</span><span class="special">==</span><span class="keyword">this</span></code>,
  1025. constant; otherwise O(n + x.size()*I(n+x.size()) + x.size()*D(x.size())).
  1026. </li>
  1027. <li class="listitem">
  1028. <span class="bold"><strong>Exception safety:</strong></span> If <code class="computeroutput"><span class="special">&amp;</span><span class="identifier">x</span><span class="special">==</span><span class="keyword">this</span></code>,
  1029. nothrow; otherwise, basic.
  1030. </li>
  1031. </ul></div>
  1032. <a name="reference_vector_of_sort"></a><pre class="programlisting"><span class="keyword">void</span> <span class="identifier">sort</span><span class="special">();</span>
  1033. </pre>
  1034. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  1035. <li class="listitem">
  1036. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">less</span><span class="special">&lt;</span><span class="identifier">value_type</span><span class="special">&gt;</span></code> is a <a href="https://www.boost.org/sgi/stl/StrictWeakOrdering.html" target="_top">Strict
  1037. Weak Ordering</a> over <code class="computeroutput"><span class="identifier">value_type</span></code>.
  1038. </li>
  1039. <li class="listitem">
  1040. <span class="bold"><strong>Effects:</strong></span> Sorts the view according
  1041. to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">less</span><span class="special">&lt;</span><span class="identifier">value_type</span><span class="special">&gt;</span></code>.
  1042. The sorting is stable, i.e. equivalent elements preserve their relative
  1043. position.
  1044. </li>
  1045. <li class="listitem">
  1046. <span class="bold"><strong>Postconditions:</strong></span> Validity of iterators
  1047. and references is preserved.
  1048. </li>
  1049. <li class="listitem">
  1050. <span class="bold"><strong>Complexity:</strong></span> O(n*log(n)).
  1051. </li>
  1052. <li class="listitem">
  1053. <span class="bold"><strong>Exception safety:</strong></span> Basic.
  1054. </li>
  1055. </ul></div>
  1056. <a name="reference_vector_of_sort_compare"></a><pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">Compare</span> <span class="special">&gt;</span>
  1057. <span class="keyword">void</span> <span class="identifier">sort</span><span class="special">(</span><span class="identifier">Compare</span> <span class="identifier">comp</span><span class="special">);</span>
  1058. </pre>
  1059. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  1060. <li class="listitem">
  1061. <span class="bold"><strong>Requires:</strong></span> Compare is a <a href="https://www.boost.org/sgi/stl/StrictWeakOrdering.html" target="_top">Strict
  1062. Weak Ordering</a> over <code class="computeroutput"><span class="identifier">value_type</span></code>.
  1063. </li>
  1064. <li class="listitem">
  1065. <span class="bold"><strong>Effects:</strong></span> Sorts the view according
  1066. to <code class="computeroutput"><span class="identifier">comp</span></code>. The sorting
  1067. is stable, i.e. equivalent elements preserve their relative position.
  1068. </li>
  1069. <li class="listitem">
  1070. <span class="bold"><strong>Postconditions:</strong></span> Validity of iterators
  1071. and references is preserved.
  1072. </li>
  1073. <li class="listitem">
  1074. <span class="bold"><strong>Complexity:</strong></span> O(n*log(n)).
  1075. </li>
  1076. <li class="listitem">
  1077. <span class="bold"><strong>Exception safety:</strong></span> Basic.
  1078. </li>
  1079. </ul></div>
  1080. <a name="reference_vector_of_reverse"></a><pre class="programlisting"><span class="keyword">void</span> <span class="identifier">reverse</span><span class="special">();</span>
  1081. </pre>
  1082. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  1083. <li class="listitem">
  1084. <span class="bold"><strong>Effects:</strong></span> Reverses the order of the
  1085. elements in the view.
  1086. </li>
  1087. <li class="listitem">
  1088. <span class="bold"><strong>Postconditions:</strong></span> Validity of iterators
  1089. and references is preserved.
  1090. </li>
  1091. <li class="listitem">
  1092. <span class="bold"><strong>Complexity:</strong></span> O(n).
  1093. </li>
  1094. <li class="listitem">
  1095. <span class="bold"><strong>Exception safety:</strong></span> nothrow.
  1096. </li>
  1097. </ul></div>
  1098. </div>
  1099. <div class="section">
  1100. <div class="titlepage"><div><div><h5 class="title">
  1101. <a name="boost_bimap.reference.vector_of_reference.vector_of_views.rearrange_operations"></a><a class="link" href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views.rearrange_operations" title="Rearrange operations">Rearrange
  1102. operations</a>
  1103. </h5></div></div></div>
  1104. <p>
  1105. These operations, without counterpart in <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">list</span></code>
  1106. (although splice provides partially overlapping functionality), perform
  1107. individual and global repositioning of elements inside the index.
  1108. </p>
  1109. <a name="reference_vector_of_relocate_iterator_iterator"></a><pre class="programlisting"><span class="keyword">void</span> <span class="identifier">relocate</span><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="identifier">iterator</span> <span class="identifier">i</span><span class="special">);</span>
  1110. </pre>
  1111. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  1112. <li class="listitem">
  1113. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">position</span></code>
  1114. is a valid iterator of the view. <code class="computeroutput"><span class="identifier">i</span></code>
  1115. is a valid dereferenceable iterator of the view.
  1116. </li>
  1117. <li class="listitem">
  1118. <span class="bold"><strong>Effects:</strong></span> Inserts the element pointed
  1119. to by <code class="computeroutput"><span class="identifier">i</span></code> before <code class="computeroutput"><span class="identifier">position</span></code>. If <code class="computeroutput"><span class="identifier">position</span><span class="special">==</span><span class="identifier">i</span></code>,
  1120. no operation is performed.
  1121. </li>
  1122. <li class="listitem">
  1123. <span class="bold"><strong>Postconditions:</strong></span> No iterator or reference
  1124. is invalidated.
  1125. </li>
  1126. <li class="listitem">
  1127. <span class="bold"><strong>Complexity:</strong></span> Constant.
  1128. </li>
  1129. <li class="listitem">
  1130. <span class="bold"><strong>Exception safety:</strong></span> nothrow.
  1131. </li>
  1132. </ul></div>
  1133. <a name="reference_vector_of_relocate_iterator_iterator_iterator"></a><pre class="programlisting"><span class="keyword">void</span> <span class="identifier">relocate</span><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="identifier">iterator</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">iterator</span> <span class="identifier">last</span><span class="special">);</span>
  1134. </pre>
  1135. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  1136. <li class="listitem">
  1137. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">position</span></code>
  1138. is a valid iterator of the view. <code class="computeroutput"><span class="identifier">first</span></code>
  1139. and <code class="computeroutput"><span class="identifier">last</span></code> are valid
  1140. iterators of the view. <code class="computeroutput"><span class="identifier">last</span></code>
  1141. is reachable from <code class="computeroutput"><span class="identifier">first</span></code>.
  1142. <code class="computeroutput"><span class="identifier">position</span></code> is not in
  1143. the range <code class="computeroutput"><span class="special">[</span><span class="identifier">first</span><span class="special">,</span><span class="identifier">last</span><span class="special">)</span></code>.
  1144. </li>
  1145. <li class="listitem">
  1146. <span class="bold"><strong>Effects:</strong></span> The range of elements
  1147. <code class="computeroutput"><span class="special">[</span><span class="identifier">first</span><span class="special">,</span><span class="identifier">last</span><span class="special">)</span></code> is repositioned just before <code class="computeroutput"><span class="identifier">position</span></code>.
  1148. </li>
  1149. <li class="listitem">
  1150. <span class="bold"><strong>Postconditions:</strong></span> No iterator or reference
  1151. is invalidated.
  1152. </li>
  1153. <li class="listitem">
  1154. <span class="bold"><strong>Complexity:</strong></span> Constant.
  1155. </li>
  1156. <li class="listitem">
  1157. <span class="bold"><strong>Exception safety:</strong></span> nothrow.
  1158. </li>
  1159. </ul></div>
  1160. </div>
  1161. <div class="section">
  1162. <div class="titlepage"><div><div><h5 class="title">
  1163. <a name="boost_bimap.reference.vector_of_reference.vector_of_views.serialization"></a><a class="link" href="vector_of_reference.html#boost_bimap.reference.vector_of_reference.vector_of_views.serialization" title="Serialization">Serialization</a>
  1164. </h5></div></div></div>
  1165. <p>
  1166. Views cannot be serialized on their own, but only as part of the <code class="computeroutput"><span class="identifier">bimap</span></code> into which they are embedded.
  1167. In describing the additional preconditions and guarantees associated
  1168. to <code class="computeroutput"><span class="identifier">vector_of</span></code> views with
  1169. respect to serialization of their embedding containers, we use the concepts
  1170. defined in the <code class="computeroutput"><span class="identifier">bimap</span></code>
  1171. serialization section.
  1172. </p>
  1173. <div class="blurb">
  1174. <div class="titlepage"><div><div><p class="title"><b></b></p></div></div></div>
  1175. <p>
  1176. <span class="bold"><strong>Operation:</strong></span> saving of a <code class="computeroutput"><span class="identifier">bimap</span></code> b to an output archive (XML archive)
  1177. ar.
  1178. </p>
  1179. </div>
  1180. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
  1181. <span class="bold"><strong>Requires:</strong></span> No additional requirements
  1182. to those imposed by the container.
  1183. </li></ul></div>
  1184. <div class="blurb">
  1185. <div class="titlepage"><div><div><p class="title"><b></b></p></div></div></div>
  1186. <p>
  1187. <span class="bold"><strong>Operation:</strong></span> loading of a <code class="computeroutput"><span class="identifier">bimap</span></code> b' from an input archive (XML
  1188. archive) ar.
  1189. </p>
  1190. </div>
  1191. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  1192. <li class="listitem">
  1193. <span class="bold"><strong>Requires:</strong></span> No additional requirements
  1194. to those imposed by the container.
  1195. </li>
  1196. <li class="listitem">
  1197. <span class="bold"><strong>Postconditions:</strong></span> On successful loading,
  1198. each of the elements of <code class="computeroutput"><span class="special">[</span><span class="identifier">begin</span><span class="special">(),</span>
  1199. <span class="identifier">end</span><span class="special">())</span></code>
  1200. is a restored copy of the corresponding element in <code class="computeroutput"><span class="special">[</span><span class="identifier">m</span><span class="special">.</span><span class="identifier">get</span><span class="special">&lt;</span><span class="identifier">i</span><span class="special">&gt;().</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">m</span><span class="special">.</span><span class="identifier">get</span><span class="special">&lt;</span><span class="identifier">i</span><span class="special">&gt;().</span><span class="identifier">end</span><span class="special">())</span></code>, where <code class="computeroutput"><span class="identifier">i</span></code>
  1201. is the position of the <code class="computeroutput"><span class="identifier">vector_of</span></code>
  1202. view in the container.
  1203. </li>
  1204. </ul></div>
  1205. <div class="blurb">
  1206. <div class="titlepage"><div><div><p class="title"><b></b></p></div></div></div>
  1207. <p>
  1208. <span class="bold"><strong>Operation:</strong></span> saving of an <code class="computeroutput"><span class="identifier">iterator</span></code> or <code class="computeroutput"><span class="identifier">const_iterator</span></code>
  1209. <code class="computeroutput"><span class="identifier">it</span></code> to an output archive
  1210. (XML archive) ar.
  1211. </p>
  1212. </div>
  1213. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
  1214. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">it</span></code>
  1215. is a valid iterator of the view. The associated <code class="computeroutput"><span class="identifier">bimap</span></code>
  1216. has been previously saved.
  1217. </li></ul></div>
  1218. <div class="blurb">
  1219. <div class="titlepage"><div><div><p class="title"><b></b></p></div></div></div>
  1220. <p>
  1221. <span class="bold"><strong>Operation:</strong></span> loading of an <code class="computeroutput"><span class="identifier">iterator</span></code> or <code class="computeroutput"><span class="identifier">const_iterator</span></code>
  1222. <code class="computeroutput"><span class="identifier">it</span></code>' from an input archive
  1223. (XML archive) ar.
  1224. </p>
  1225. </div>
  1226. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  1227. <li class="listitem">
  1228. <span class="bold"><strong>Postconditions:</strong></span> On successful loading,
  1229. if it was dereferenceable then <code class="computeroutput"><span class="special">*</span><span class="identifier">it</span></code>' is the restored copy of <code class="computeroutput"><span class="special">*</span><span class="identifier">it</span></code>,
  1230. otherwise <code class="computeroutput"><span class="identifier">it</span></code>'<code class="computeroutput"><span class="special">==</span><span class="identifier">end</span><span class="special">()</span></code>.
  1231. </li>
  1232. <li class="listitem">
  1233. <span class="bold"><strong>Note:</strong></span> It is allowed that it be a
  1234. <code class="computeroutput"><span class="identifier">const_iterator</span></code> and
  1235. the restored <code class="computeroutput"><span class="identifier">it</span></code>'
  1236. an <code class="computeroutput"><span class="identifier">iterator</span></code>, or viceversa.
  1237. </li>
  1238. </ul></div>
  1239. </div>
  1240. </div>
  1241. </div>
  1242. <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
  1243. <td align="left"></td>
  1244. <td align="right"><div class="copyright-footer">Copyright &#169; 2006-2012 Matias Capeletto<p>
  1245. Distributed under the Boost Software License, Version 1.0. (See accompanying
  1246. file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
  1247. </p>
  1248. </div></td>
  1249. </tr></table>
  1250. <hr>
  1251. <div class="spirit-nav">
  1252. <a accesskey="p" href="list_of_reference.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="unconstrained_set_of_reference.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
  1253. </div>
  1254. </body>
  1255. </html>