set_of_reference.html 118 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
  4. <title>set_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="bimap_reference.html" title="Bimap Reference">
  10. <link rel="next" href="unordered_set_of_reference.html" title="unordered_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="bimap_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="unordered_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.set_of_reference"></a><a class="link" href="set_of_reference.html" title="set_of Reference">set_of Reference</a>
  28. </h3></div></div></div>
  29. <div class="toc"><dl class="toc">
  30. <dt><span class="section"><a href="set_of_reference.html#boost_bimap.reference.set_of_reference.header__boost_bimap_set_of_hpp__synopsis">Header
  31. "boost/bimap/set_of.hpp" synopsis</a></span></dt>
  32. <dt><span class="section"><a href="set_of_reference.html#boost_bimap.reference.set_of_reference.header__boost_bimap_multiset_of_hpp__synopsis">Header
  33. "boost/bimap/multiset_of.hpp" synopsis</a></span></dt>
  34. <dt><span class="section"><a href="set_of_reference.html#boost_bimap.reference.set_of_reference.collection_type_specifiers_set_of_and_multiset_of">Collection
  35. type specifiers set_of and multiset_of</a></span></dt>
  36. <dt><span class="section"><a href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views">[multi]set_of
  37. Views</a></span></dt>
  38. <dd><dl>
  39. <dt><span class="section"><a href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views.complexity_signature">Complexity
  40. signature</a></span></dt>
  41. <dt><span class="section"><a href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views.instantiation_types">Instantiation
  42. types</a></span></dt>
  43. <dt><span class="section"><a href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views.constructors__copy_and_assignment">Constructors,
  44. copy and assignment</a></span></dt>
  45. <dt><span class="section"><a href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views.modifiers">Modifiers</a></span></dt>
  46. <dt><span class="section"><a href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views.set_operations">Set
  47. operations</a></span></dt>
  48. <dt><span class="section"><a href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views.range_operations">Range
  49. operations</a></span></dt>
  50. <dt><span class="section"><a href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views.at____info_at___and_operator_______set_of_only">at(),
  51. info_at() and operator[] - set_of only</a></span></dt>
  52. <dt><span class="section"><a href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views.serialization">Serialization</a></span></dt>
  53. </dl></dd>
  54. </dl></div>
  55. <div class="section">
  56. <div class="titlepage"><div><div><h4 class="title">
  57. <a name="boost_bimap.reference.set_of_reference.header__boost_bimap_set_of_hpp__synopsis"></a><a class="link" href="set_of_reference.html#boost_bimap.reference.set_of_reference.header__boost_bimap_set_of_hpp__synopsis" title='Header "boost/bimap/set_of.hpp" synopsis'>Header
  58. "boost/bimap/set_of.hpp" synopsis</a>
  59. </h4></div></div></div>
  60. <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
  61. <span class="keyword">namespace</span> <span class="identifier">bimaps</span> <span class="special">{</span>
  62. <span class="keyword">template</span>
  63. <span class="special">&lt;</span>
  64. <span class="keyword">class</span> <span class="identifier">KeyType</span><span class="special">,</span>
  65. <span class="keyword">class</span> <span class="identifier">KeyCompare</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">less</span><span class="special">&lt;</span> <span class="identifier">KeyType</span> <span class="special">&gt;</span>
  66. <span class="special">&gt;</span>
  67. <span class="keyword">struct</span> <span class="identifier">set_of</span><span class="special">;</span>
  68. <span class="keyword">template</span>
  69. <span class="special">&lt;</span>
  70. <span class="keyword">class</span> <span class="identifier">KeyCompare</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">less</span><span class="special">&lt;</span> <span class="identifier">_relation</span> <span class="special">&gt;</span>
  71. <span class="special">&gt;</span>
  72. <span class="keyword">struct</span> <span class="identifier">set_of_relation</span><span class="special">;</span>
  73. <span class="special">}</span> <span class="comment">// namespace bimap</span>
  74. <span class="special">}</span> <span class="comment">// namespace boost</span>
  75. </pre>
  76. </div>
  77. <div class="section">
  78. <div class="titlepage"><div><div><h4 class="title">
  79. <a name="boost_bimap.reference.set_of_reference.header__boost_bimap_multiset_of_hpp__synopsis"></a><a class="link" href="set_of_reference.html#boost_bimap.reference.set_of_reference.header__boost_bimap_multiset_of_hpp__synopsis" title='Header "boost/bimap/multiset_of.hpp" synopsis'>Header
  80. "boost/bimap/multiset_of.hpp" synopsis</a>
  81. </h4></div></div></div>
  82. <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
  83. <span class="keyword">namespace</span> <span class="identifier">bimaps</span> <span class="special">{</span>
  84. <span class="keyword">template</span>
  85. <span class="special">&lt;</span>
  86. <span class="keyword">class</span> <span class="identifier">KeyType</span><span class="special">,</span>
  87. <span class="keyword">class</span> <span class="identifier">KeyCompare</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">less</span><span class="special">&lt;</span> <span class="identifier">KeyType</span> <span class="special">&gt;</span>
  88. <span class="special">&gt;</span>
  89. <span class="keyword">struct</span> <span class="identifier">multiset_of</span><span class="special">;</span>
  90. <span class="keyword">template</span>
  91. <span class="special">&lt;</span>
  92. <span class="keyword">class</span> <span class="identifier">KeyCompare</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">less</span><span class="special">&lt;</span> <span class="identifier">_relation</span> <span class="special">&gt;</span>
  93. <span class="special">&gt;</span>
  94. <span class="keyword">struct</span> <span class="identifier">multiset_of_relation</span><span class="special">;</span>
  95. <span class="special">}</span> <span class="comment">// namespace bimap</span>
  96. <span class="special">}</span> <span class="comment">// namespace boost</span>
  97. </pre>
  98. </div>
  99. <div class="section">
  100. <div class="titlepage"><div><div><h4 class="title">
  101. <a name="boost_bimap.reference.set_of_reference.collection_type_specifiers_set_of_and_multiset_of"></a><a class="link" href="set_of_reference.html#boost_bimap.reference.set_of_reference.collection_type_specifiers_set_of_and_multiset_of" title="Collection type specifiers set_of and multiset_of">Collection
  102. type specifiers set_of and multiset_of</a>
  103. </h4></div></div></div>
  104. <p>
  105. These collection type specifiers allow for insertion of sets disallowing
  106. or allowing duplicate elements, respectively. The syntaxes of <code class="computeroutput"><span class="identifier">set_of</span></code> and <code class="computeroutput"><span class="identifier">multiset_of</span></code>
  107. coincide, so they are described together.
  108. </p>
  109. </div>
  110. <div class="section">
  111. <div class="titlepage"><div><div><h4 class="title">
  112. <a name="boost_bimap.reference.set_of_reference.__multi__set_of_views"></a><a class="link" href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views" title="[multi]set_of Views">[multi]set_of
  113. Views</a>
  114. </h4></div></div></div>
  115. <div class="toc"><dl class="toc">
  116. <dt><span class="section"><a href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views.complexity_signature">Complexity
  117. signature</a></span></dt>
  118. <dt><span class="section"><a href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views.instantiation_types">Instantiation
  119. types</a></span></dt>
  120. <dt><span class="section"><a href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views.constructors__copy_and_assignment">Constructors,
  121. copy and assignment</a></span></dt>
  122. <dt><span class="section"><a href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views.modifiers">Modifiers</a></span></dt>
  123. <dt><span class="section"><a href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views.set_operations">Set
  124. operations</a></span></dt>
  125. <dt><span class="section"><a href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views.range_operations">Range
  126. operations</a></span></dt>
  127. <dt><span class="section"><a href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views.at____info_at___and_operator_______set_of_only">at(),
  128. info_at() and operator[] - set_of only</a></span></dt>
  129. <dt><span class="section"><a href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views.serialization">Serialization</a></span></dt>
  130. </dl></div>
  131. <p>
  132. A [multi]set_of set view is a std::[multi]set signature-compatible interface
  133. to the underlying heap of elements contained in a <code class="computeroutput"><span class="identifier">bimap</span></code>.
  134. </p>
  135. <p>
  136. There are two variants: set_of, which does not allow duplicate elements
  137. (with respect to its associated comparison predicate) and multiset_of,
  138. which does accept those duplicates. The interface of these two variants
  139. is largely the same, so they are documented together with their differences
  140. explicitly noted where they exist.
  141. </p>
  142. <p>
  143. If you look the bimap from a side, you will use a map view, and if you
  144. look at it as a whole, you will be using a set view.
  145. </p>
  146. <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
  147. <span class="keyword">namespace</span> <span class="identifier">bimaps</span> <span class="special">{</span>
  148. <span class="keyword">namespace</span> <span class="identifier">views</span> <span class="special">{</span>
  149. <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>
  150. <span class="keyword">class</span> <span class="emphasis"><em>-implementation defined view name-</em></span>
  151. <span class="special">{</span>
  152. <span class="keyword">public</span><span class="special">:</span>
  153. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">key_type</span><span class="special">;</span>
  154. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">value_type</span><span class="special">;</span>
  155. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">key_compare</span><span class="special">;</span>
  156. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">value_compare</span><span class="special">;</span>
  157. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">allocator_type</span><span class="special">;</span>
  158. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">reference</span><span class="special">;</span>
  159. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">const_reference</span><span class="special">;</span>
  160. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">iterator</span><span class="special">;</span>
  161. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">const_iterator</span><span class="special">;</span>
  162. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">size_type</span><span class="special">;</span>
  163. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">difference_type</span><span class="special">;</span>
  164. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">pointer</span><span class="special">;</span>
  165. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">const_pointer</span><span class="special">;</span>
  166. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">reverse_iterator</span><span class="special">;</span>
  167. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">const_reverse_iterator</span><span class="special">;</span>
  168. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">info_type</span><span class="special">;</span>
  169. <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>
  170. <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>
  171. <span class="comment">// iterators</span>
  172. <span class="identifier">iterator</span> <span class="identifier">begin</span><span class="special">();</span>
  173. <span class="identifier">const_iterator</span> <span class="identifier">begin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
  174. <span class="identifier">iterator</span> <span class="identifier">end</span><span class="special">();</span>
  175. <span class="identifier">const_iterator</span> <span class="identifier">end</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
  176. <span class="identifier">reverse_iterator</span> <span class="identifier">rbegin</span><span class="special">();</span>
  177. <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>
  178. <span class="identifier">reverse_iterator</span> <span class="identifier">rend</span><span class="special">();</span>
  179. <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>
  180. <span class="comment">// capacity</span>
  181. <span class="keyword">bool</span> <span class="identifier">empty</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
  182. <span class="identifier">size_type</span> <span class="identifier">size</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
  183. <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>
  184. <span class="comment">// modifiers</span>
  185. <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="set_of_reference.html#reference_set_of_insert_value">insert</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>
  186. <span class="identifier">iterator</span> <a class="link" href="set_of_reference.html#reference_set_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>
  187. <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>
  188. <span class="keyword">void</span> <a class="link" href="set_of_reference.html#reference_set_of_insert_iterator_iterator">insert</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>
  189. <span class="identifier">iterator</span> <a class="link" href="set_of_reference.html#reference_set_of_erase_iterator">erase</a><span class="special">(</span><span class="identifier">iterator</span> <span class="identifier">position</span><span class="special">);</span>
  190. <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>
  191. <span class="identifier">size_type</span> <a class="link" href="set_of_reference.html#reference_set_of_erase_key">erase</a><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>
  192. <span class="identifier">iterator</span> <a class="link" href="set_of_reference.html#reference_set_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>
  193. <span class="keyword">bool</span> <a class="link" href="set_of_reference.html#reference_set_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>
  194. <span class="comment">// Only in map views</span>
  195. <span class="comment">// {</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="set_of_reference.html#reference_set_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="set_of_reference.html#reference_set_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="set_of_reference.html#reference_set_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="set_of_reference.html#reference_set_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">swap</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>
  206. <span class="keyword">void</span> <span class="identifier">clear</span><span class="special">();</span>
  207. <span class="comment">// observers</span>
  208. <span class="identifier">key_compare</span> <span class="identifier">key_comp</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
  209. <span class="identifier">value_compare</span> <span class="identifier">value_comp</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
  210. <span class="comment">// set operations</span>
  211. <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>
  212. <span class="identifier">iterator</span> <a class="link" href="set_of_reference.html#reference_set_of_find_key">find</a><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>
  213. <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>
  214. <span class="identifier">const_iterator</span> <a class="link" href="set_of_reference.html#reference_set_of_find_key">find</a><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> <span class="keyword">const</span><span class="special">;</span>
  215. <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>
  216. <span class="identifier">size_type</span> <a class="link" href="set_of_reference.html#reference_set_of_count_key">count</a><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> <span class="keyword">const</span><span class="special">;</span>
  217. <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>
  218. <span class="identifier">iterator</span> <a class="link" href="set_of_reference.html#reference_set_of_lower_bound_key">lower_bound</a><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>
  219. <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>
  220. <span class="identifier">const_iterator</span> <a class="link" href="set_of_reference.html#reference_set_of_lower_bound_key">lower_bound</a><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> <span class="keyword">const</span><span class="special">;</span>
  221. <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>
  222. <span class="identifier">iterator</span> <a class="link" href="set_of_reference.html#reference_set_of_upper_bound_key">upper_bound</a><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>
  223. <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>
  224. <span class="identifier">const_iterator</span> <a class="link" href="set_of_reference.html#reference_set_of_upper_bound_key">upper_bound</a><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> <span class="keyword">const</span><span class="special">;</span>
  225. <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>
  226. <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="identifier">iterator</span><span class="special">&gt;</span>
  227. <a class="link" href="set_of_reference.html#reference_set_of_equal_range_key">equal_range</a><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>
  228. <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>
  229. <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">const_iterator</span><span class="special">,</span><span class="identifier">const_iterator</span><span class="special">&gt;</span>
  230. <a class="link" href="set_of_reference.html#reference_set_of_equal_range_key">equal_range</a><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> <span class="keyword">const</span><span class="special">;</span>
  231. <span class="comment">// Only in maps views</span>
  232. <span class="comment">// {</span>
  233. <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">LowerBounder</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">UpperBounder</span><span class="special">&gt;</span>
  234. <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="identifier">iterator</span><span class="special">&gt;</span> <a class="link" href="set_of_reference.html#reference_set_of_range_lower_upper">range</a><span class="special">(</span>
  235. <span class="identifier">LowerBounder</span> <span class="identifier">lower</span><span class="special">,</span> <span class="identifier">UpperBounder</span> <span class="identifier">upper</span><span class="special">);</span>
  236. <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">LowerBounder</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">UpperBounder</span><span class="special">&gt;</span>
  237. <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">const_iterator</span><span class="special">,</span><span class="identifier">const_iterator</span><span class="special">&gt;</span> <a class="link" href="set_of_reference.html#reference_set_of_range_lower_upper">range</a><span class="special">(</span>
  238. <span class="identifier">LowerBounder</span> <span class="identifier">lower</span><span class="special">,</span> <span class="identifier">UpperBounder</span> <span class="identifier">upper</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
  239. <span class="keyword">typedef</span> <span class="emphasis"><em>-unspecified-</em></span> <span class="identifier">mapped_type</span><span class="special">;</span>
  240. <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>
  241. <span class="comment">// Only in for `set_of` collection type</span>
  242. <span class="comment">// {</span>
  243. <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>
  244. <span class="keyword">const</span> <span class="identifier">mapped_type</span> <span class="special">&amp;</span> <a class="link" href="set_of_reference.html#reference_set_of_at_key_const">at</a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">CompatibleKey</span> <span class="special">&amp;</span> <span class="identifier">k</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
  245. <span class="comment">// Only if the other collection type is mutable</span>
  246. <span class="comment">// {</span>
  247. <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>
  248. <span class="identifier">mapped_type</span> <span class="special">&amp;</span> <a class="link" href="set_of_reference.html#reference_set_of_operator_bracket_key">operator[]</a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">CompatibleKey</span> <span class="special">&amp;</span> <span class="identifier">k</span><span class="special">);</span>
  249. <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>
  250. <span class="identifier">mapped_type</span> <span class="special">&amp;</span> <a class="link" href="set_of_reference.html#reference_set_of_at_key">at</a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">CompatibleKey</span> <span class="special">&amp;</span> <span class="identifier">k</span><span class="special">);</span>
  251. <span class="comment">// }</span>
  252. <span class="comment">// Only if info_hook is used</span>
  253. <span class="comment">// {</span>
  254. <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>
  255. <span class="identifier">info_type</span> <span class="special">&amp;</span> <a class="link" href="set_of_reference.html#reference_set_of_info_at_key">info_at</a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">CompatibleKey</span> <span class="special">&amp;</span> <span class="identifier">k</span><span class="special">);</span>
  256. <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>
  257. <span class="keyword">const</span> <span class="identifier">info_type</span> <span class="special">&amp;</span> <a class="link" href="set_of_reference.html#reference_set_of_info_at_key">info_at</a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">CompatibleKey</span> <span class="special">&amp;</span> <span class="identifier">k</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
  258. <span class="comment">// }</span>
  259. <span class="comment">// }</span>
  260. <span class="comment">// }</span>
  261. <span class="special">};</span>
  262. <span class="comment">// view comparison</span>
  263. <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>
  264. <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>
  265. <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>
  266. <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>
  267. <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>
  268. <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>
  269. <span class="special">}</span> <span class="comment">// namespace views</span>
  270. <span class="special">}</span> <span class="comment">// namespace bimap</span>
  271. <span class="special">}</span> <span class="comment">// namespace boost</span>
  272. </pre>
  273. <p>
  274. In the case of a <code class="computeroutput"><span class="identifier">bimap</span><span class="special">&lt;</span> <span class="special">{</span><span class="identifier">multi</span><span class="special">}</span><span class="identifier">set_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>
  275. </p>
  276. <p>
  277. In the set view:
  278. </p>
  279. <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>
  280. <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="keyword">const</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>
  281. </pre>
  282. <p>
  283. In the left map view:
  284. </p>
  285. <pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">Left</span> <span class="identifier">key_type</span><span class="special">;</span>
  286. <span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">mapped_type</span><span class="special">;</span>
  287. <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="keyword">const</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>
  288. </pre>
  289. <p>
  290. In the right map view:
  291. </p>
  292. <pre class="programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">key_type</span><span class="special">;</span>
  293. <span class="keyword">typedef</span> <span class="identifier">Left</span> <span class="identifier">mapped_type</span><span class="special">;</span>
  294. <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="keyword">const</span> <span class="identifier">Left</span> <span class="special">&gt;</span> <span class="identifier">value_type</span><span class="special">;</span>
  295. </pre>
  296. <div class="section">
  297. <div class="titlepage"><div><div><h5 class="title">
  298. <a name="boost_bimap.reference.set_of_reference.__multi__set_of_views.complexity_signature"></a><a name="set_of_complexity_signature"></a><a class="link" href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views.complexity_signature" title="Complexity signature">Complexity
  299. signature</a>
  300. </h5></div></div></div>
  301. <p>
  302. Here and in the descriptions of operations of this view, we adopt the
  303. scheme outlined in the <a class="link" href="bimap_reference.html#complexity_signature_explanation">complexity
  304. signature section</a>. The complexity signature of [multi]set_of view
  305. is:
  306. </p>
  307. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  308. <li class="listitem">
  309. 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>,
  310. </li>
  311. <li class="listitem">
  312. 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="identifier">log</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span></code>,
  313. </li>
  314. <li class="listitem">
  315. 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> (constant) if the hint element precedes
  316. the point of 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="identifier">log</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span></code>
  317. otherwise,
  318. </li>
  319. <li class="listitem">
  320. 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="number">1</span></code>
  321. (amortized constant),
  322. </li>
  323. <li class="listitem">
  324. 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>
  325. (constant) if the element position does not change, <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="identifier">log</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span></code> otherwise,
  326. </li>
  327. <li class="listitem">
  328. 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>
  329. (constant) if the element position does not change, <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="identifier">log</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span></code> otherwise.
  330. </li>
  331. </ul></div>
  332. </div>
  333. <div class="section">
  334. <div class="titlepage"><div><div><h5 class="title">
  335. <a name="boost_bimap.reference.set_of_reference.__multi__set_of_views.instantiation_types"></a><a class="link" href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views.instantiation_types" title="Instantiation types">Instantiation
  336. types</a>
  337. </h5></div></div></div>
  338. <p>
  339. Set views are instantiated internally to a <code class="computeroutput"><span class="identifier">bimap</span></code>.
  340. Instantiations are dependent on the following types:
  341. </p>
  342. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  343. <li class="listitem">
  344. <code class="computeroutput"><span class="identifier">Value</span></code> from the set
  345. specifier,
  346. </li>
  347. <li class="listitem">
  348. <code class="computeroutput"><span class="identifier">Allocator</span></code> from <code class="computeroutput"><span class="identifier">bimap</span></code>,
  349. </li>
  350. <li class="listitem">
  351. <code class="computeroutput"><span class="identifier">Compare</span></code> from the
  352. set specifier.
  353. </li>
  354. </ul></div>
  355. <p>
  356. <code class="computeroutput"><span class="identifier">Compare</span></code> is a <a href="https://www.boost.org/sgi/stl/StrictWeakOrdering.html" target="_top">Strict
  357. Weak Ordering</a> on elements of <code class="computeroutput"><span class="identifier">Value</span></code>.
  358. </p>
  359. </div>
  360. <div class="section">
  361. <div class="titlepage"><div><div><h5 class="title">
  362. <a name="boost_bimap.reference.set_of_reference.__multi__set_of_views.constructors__copy_and_assignment"></a><a class="link" href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views.constructors__copy_and_assignment" title="Constructors, copy and assignment">Constructors,
  363. copy and assignment</a>
  364. </h5></div></div></div>
  365. <p>
  366. Set views do not have public constructors or destructors. Assignment,
  367. on the other hand, is provided.
  368. </p>
  369. <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>
  370. </pre>
  371. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  372. <li class="listitem">
  373. <span class="bold"><strong>Effects: </strong></span> <code class="computeroutput"><span class="identifier">a</span>
  374. <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>
  375. and x belong, respectively.
  376. </li>
  377. <li class="listitem">
  378. <span class="bold"><strong>Returns: </strong></span> <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
  379. </li>
  380. </ul></div>
  381. </div>
  382. <div class="section">
  383. <div class="titlepage"><div><div><h5 class="title">
  384. <a name="boost_bimap.reference.set_of_reference.__multi__set_of_views.modifiers"></a><a class="link" href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views.modifiers" title="Modifiers">Modifiers</a>
  385. </h5></div></div></div>
  386. <a name="reference_set_of_insert_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="keyword">const</span> <span class="identifier">value_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
  387. </pre>
  388. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  389. <li class="listitem">
  390. <span class="bold"><strong>Effects:</strong></span> Inserts <code class="computeroutput"><span class="identifier">x</span></code>
  391. into the <code class="computeroutput"><span class="identifier">bimap</span></code> to
  392. which the set view belongs if
  393. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
  394. <li class="listitem">
  395. the set view is non-unique OR no other element with equivalent
  396. key exists,
  397. </li>
  398. <li class="listitem">
  399. AND insertion is allowed by the other set specifications the
  400. <code class="computeroutput"><span class="identifier">bimap</span></code>.
  401. </li>
  402. </ul></div>
  403. </li>
  404. <li class="listitem">
  405. <span class="bold"><strong>Returns:</strong></span> The return value is a pair
  406. <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>
  407. 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;
  408. otherwise, <code class="computeroutput"><span class="identifier">p</span><span class="special">.</span><span class="identifier">first</span></code> points to an element that
  409. caused the insertion to be banned. Note that more than one element
  410. can be causing insertion not to be allowed.
  411. </li>
  412. <li class="listitem">
  413. <a class="link" href="set_of_reference.html#set_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  414. O(I(n)).
  415. </li>
  416. <li class="listitem">
  417. <span class="bold"><strong>Exception safety:</strong></span> Strong.
  418. </li>
  419. </ul></div>
  420. <a name="reference_set_of_insert_iterator_value"></a><pre class="programlisting"><span class="identifier">iterator</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>
  421. </pre>
  422. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  423. <li class="listitem">
  424. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">position</span></code>
  425. is a valid iterator of the view.
  426. </li>
  427. <li class="listitem">
  428. <span class="bold"><strong>Effects: </strong></span> <code class="computeroutput"><span class="identifier">position</span></code>
  429. is used as a hint to improve the efficiency of the operation. Inserts
  430. <code class="computeroutput"><span class="identifier">x</span></code> into the <code class="computeroutput"><span class="identifier">bimap</span></code> to which the view belongs
  431. if
  432. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
  433. <li class="listitem">
  434. the set view is non-unique OR no other element with equivalent
  435. key exists,
  436. </li>
  437. <li class="listitem">
  438. AND insertion is allowed by all other views of the <code class="computeroutput"><span class="identifier">bimap</span></code>.
  439. </li>
  440. </ul></div>
  441. </li>
  442. <li class="listitem">
  443. <span class="bold"><strong>Returns:</strong></span> On successful insertion,
  444. an iterator to the newly inserted element. Otherwise, an iterator
  445. to an element that caused the insertion to be banned. Note that more
  446. than one element can be causing insertion not to be allowed.
  447. </li>
  448. <li class="listitem">
  449. <a class="link" href="set_of_reference.html#set_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  450. O(H(n)).
  451. </li>
  452. <li class="listitem">
  453. <span class="bold"><strong>Exception safety:</strong></span> Strong.
  454. </li>
  455. </ul></div>
  456. <a name="reference_set_of_insert_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>
  457. <span class="keyword">void</span> <span class="identifier">insert</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>
  458. </pre>
  459. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  460. <li class="listitem">
  461. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">InputIterator</span></code>
  462. is a model of <a href="https://www.boost.org/sgi/stl/InputIterator.html" target="_top">Input
  463. Iterator</a> over elements of type <code class="computeroutput"><span class="identifier">value_type</span></code>
  464. or a type convertible to value_type. <code class="computeroutput"><span class="identifier">first</span></code>
  465. and <code class="computeroutput"><span class="identifier">last</span></code> are not
  466. iterators into any view of the <code class="computeroutput"><span class="identifier">bimap</span></code>
  467. to which this index belongs. <code class="computeroutput"><span class="identifier">last</span></code>
  468. is reachable from <code class="computeroutput"><span class="identifier">first</span></code>.
  469. </li>
  470. <li class="listitem">
  471. <span class="bold"><strong>Effects: </strong></span> <code class="computeroutput"><span class="identifier">iterator</span>
  472. <span class="identifier">hint</span> <span class="special">=</span>
  473. <span class="identifier">end</span><span class="special">()</span></code>;
  474. <code class="computeroutput"><span class="keyword">while</span><span class="special">(</span>
  475. <span class="identifier">first</span> <span class="special">!=</span>
  476. <span class="identifier">last</span> <span class="special">)</span>
  477. <span class="identifier">hint</span> <span class="special">=</span>
  478. <span class="identifier">insert</span><span class="special">(</span>
  479. <span class="identifier">hint</span><span class="special">,</span>
  480. <span class="special">*</span><span class="identifier">first</span><span class="special">++</span> <span class="special">);</span></code>
  481. </li>
  482. <li class="listitem">
  483. <a class="link" href="set_of_reference.html#set_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  484. O(m*H(n+m)), where m is the number of elements in <code class="computeroutput"><span class="special">[</span><span class="identifier">first</span><span class="special">,</span>
  485. <span class="identifier">last</span><span class="special">)</span></code>.
  486. </li>
  487. <li class="listitem">
  488. <span class="bold"><strong>Exception safety:</strong></span> Basic.
  489. </li>
  490. </ul></div>
  491. <a name="reference_set_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>
  492. </pre>
  493. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  494. <li class="listitem">
  495. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">position</span></code>
  496. is a valid dereferenceable iterator if the set view.
  497. </li>
  498. <li class="listitem">
  499. <span class="bold"><strong>Effects:</strong></span> Deletes the element pointed
  500. to by <code class="computeroutput"><span class="identifier">position</span></code>.
  501. </li>
  502. <li class="listitem">
  503. <span class="bold"><strong>Returns:</strong></span> An iterator pointing to
  504. the element immediately following the one that was deleted, or <code class="computeroutput"><span class="identifier">end</span><span class="special">()</span></code>
  505. if no such element exists.
  506. </li>
  507. <li class="listitem">
  508. <a class="link" href="set_of_reference.html#set_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  509. O(D(n)).
  510. </li>
  511. <li class="listitem">
  512. <span class="bold"><strong>Exception safety:</strong></span> nothrow.
  513. </li>
  514. </ul></div>
  515. <a name="reference_set_of_erase_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>
  516. <span class="identifier">size_type</span> <span class="identifier">erase</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>
  517. </pre>
  518. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  519. <li class="listitem">
  520. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">CompatibleKey</span></code>
  521. is a compatible key of <code class="computeroutput"><span class="identifier">key_compare</span></code>.
  522. </li>
  523. <li class="listitem">
  524. <span class="bold"><strong>Effects:</strong></span> Deletes the elements with
  525. key equivalent to <code class="computeroutput"><span class="identifier">x</span></code>.
  526. </li>
  527. <li class="listitem">
  528. <span class="bold"><strong>Returns:</strong></span> Number of elements deleted.
  529. </li>
  530. <li class="listitem">
  531. <a class="link" href="set_of_reference.html#set_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  532. O(log(n) + m*D(n)), where m is the number of elements deleted.
  533. </li>
  534. <li class="listitem">
  535. <span class="bold"><strong>Exception safety:</strong></span> Basic.
  536. </li>
  537. </ul></div>
  538. <a name="reference_set_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>
  539. </pre>
  540. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  541. <li class="listitem">
  542. <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>
  543. is a valid range of the view.
  544. </li>
  545. <li class="listitem">
  546. <span class="bold"><strong>Effects:</strong></span> Deletes the elements in
  547. <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>.
  548. </li>
  549. <li class="listitem">
  550. <span class="bold"><strong>Returns:</strong></span> last.
  551. </li>
  552. <li class="listitem">
  553. <a class="link" href="set_of_reference.html#set_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  554. O(log(n) + 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>.
  555. </li>
  556. <li class="listitem">
  557. <span class="bold"><strong>Exception safety:</strong></span> nothrow.
  558. </li>
  559. </ul></div>
  560. <a name="reference_set_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>
  561. </pre>
  562. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  563. <li class="listitem">
  564. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">position</span></code>
  565. is a valid dereferenceable iterator of the set view.
  566. </li>
  567. <li class="listitem">
  568. <span class="bold"><strong>Effects:</strong></span> Assigns the value <code class="computeroutput"><span class="identifier">x</span></code> to the element pointed to by
  569. <code class="computeroutput"><span class="identifier">position</span></code> into the
  570. <code class="computeroutput"><span class="identifier">bimap</span></code> to which the
  571. set view belongs if, for the value <code class="computeroutput"><span class="identifier">x</span></code>
  572. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
  573. <li class="listitem">
  574. the set view is non-unique OR no other element with equivalent
  575. key exists (except possibly <code class="computeroutput"><span class="special">*</span><span class="identifier">position</span></code>),
  576. </li>
  577. <li class="listitem">
  578. AND replacing is allowed by all other views of the <code class="computeroutput"><span class="identifier">bimap</span></code>.
  579. </li>
  580. </ul></div>
  581. </li>
  582. <li class="listitem">
  583. <span class="bold"><strong>Postconditions:</strong></span> Validity of position
  584. is preserved in all cases.
  585. </li>
  586. <li class="listitem">
  587. <span class="bold"><strong>Returns: </strong></span> <code class="computeroutput"><span class="keyword">true</span></code>
  588. if the replacement took place, <code class="computeroutput"><span class="keyword">false</span></code>
  589. otherwise.
  590. </li>
  591. <li class="listitem">
  592. <a class="link" href="set_of_reference.html#set_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  593. O(R(n)).
  594. </li>
  595. <li class="listitem">
  596. <span class="bold"><strong>Exception safety:</strong></span> Strong. If an
  597. exception is thrown by some user-provided operation, the <code class="computeroutput"><span class="identifier">bimap</span></code> to which the set view belongs
  598. remains in its original state.
  599. </li>
  600. </ul></div>
  601. <a name="reference_set_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>
  602. <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>
  603. </pre>
  604. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  605. <li class="listitem">
  606. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">position</span></code>
  607. is a valid dereferenceable iterator of the set view. <code class="computeroutput"><span class="identifier">CompatibleKey</span></code> can be assigned to
  608. <code class="computeroutput"><span class="identifier">key_type</span></code>.
  609. </li>
  610. <li class="listitem">
  611. <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>,
  612. where <code class="computeroutput"><span class="identifier">e</span></code> is the element
  613. pointed to by <code class="computeroutput"><span class="identifier">position</span></code>
  614. into the <code class="computeroutput"><span class="identifier">bimap</span></code> to
  615. which the set view belongs if,
  616. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
  617. <li class="listitem">
  618. the map view is non-unique OR no other element with equivalent
  619. key exists (except possibly <code class="computeroutput"><span class="special">*</span><span class="identifier">position</span></code>),
  620. </li>
  621. <li class="listitem">
  622. AND replacing is allowed by all other views of the <code class="computeroutput"><span class="identifier">bimap</span></code>.
  623. </li>
  624. </ul></div>
  625. </li>
  626. <li class="listitem">
  627. <span class="bold"><strong>Postconditions:</strong></span> Validity of position
  628. is preserved in all cases.
  629. </li>
  630. <li class="listitem">
  631. <span class="bold"><strong>Returns: </strong></span> <code class="computeroutput"><span class="keyword">true</span></code>
  632. if the replacement took place, <code class="computeroutput"><span class="keyword">false</span></code>
  633. otherwise.
  634. </li>
  635. <li class="listitem">
  636. <a class="link" href="set_of_reference.html#set_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  637. O(R(n)).
  638. </li>
  639. <li class="listitem">
  640. <span class="bold"><strong>Exception safety:</strong></span> Strong. If an
  641. exception is thrown by some user-provided operation, the <code class="computeroutput"><span class="identifier">bimap</span></code> to which the set view belongs
  642. remains in its original state.
  643. </li>
  644. </ul></div>
  645. <a name="reference_set_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>
  646. <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>
  647. </pre>
  648. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  649. <li class="listitem">
  650. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">position</span></code>
  651. is a valid dereferenceable iterator of the set view. <code class="computeroutput"><span class="identifier">CompatibleKey</span></code> can be assigned to
  652. <code class="computeroutput"><span class="identifier">mapped_type</span></code>.
  653. </li>
  654. <li class="listitem">
  655. <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>,
  656. where <code class="computeroutput"><span class="identifier">e</span></code> is the element
  657. pointed to by <code class="computeroutput"><span class="identifier">position</span></code>
  658. into the <code class="computeroutput"><span class="identifier">bimap</span></code> to
  659. which the set view belongs if,
  660. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
  661. <li class="listitem">
  662. the map view is non-unique OR no other element with equivalent
  663. key exists (except possibly <code class="computeroutput"><span class="special">*</span><span class="identifier">position</span></code>),
  664. </li>
  665. <li class="listitem">
  666. AND replacing is allowed by all other views of the <code class="computeroutput"><span class="identifier">bimap</span></code>.
  667. </li>
  668. </ul></div>
  669. </li>
  670. <li class="listitem">
  671. <span class="bold"><strong>Postconditions:</strong></span> Validity of position
  672. is preserved in all cases.
  673. </li>
  674. <li class="listitem">
  675. <span class="bold"><strong>Returns: </strong></span> <code class="computeroutput"><span class="keyword">true</span></code>
  676. if the replacement took place, <code class="computeroutput"><span class="keyword">false</span></code>
  677. otherwise.
  678. </li>
  679. <li class="listitem">
  680. <a class="link" href="set_of_reference.html#set_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  681. O(R(n)).
  682. </li>
  683. <li class="listitem">
  684. <span class="bold"><strong>Exception safety:</strong></span> Strong. If an
  685. exception is thrown by some user-provided operation, the <code class="computeroutput"><span class="identifier">bimap</span></code> to which the set view belongs
  686. remains in its original state.
  687. </li>
  688. </ul></div>
  689. <a name="reference_set_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>
  690. <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>
  691. </pre>
  692. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  693. <li class="listitem">
  694. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">KeyModifier</span></code>
  695. is a model of <a href="https://www.boost.org/sgi/stl/UnaryFunction.html" target="_top">Unary
  696. 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>
  697. is a valid dereferenceable iterator of the view.
  698. </li>
  699. <li class="listitem">
  700. <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
  701. by position and rearranges <code class="computeroutput"><span class="special">*</span><span class="identifier">position</span></code> into all the views of
  702. the <code class="computeroutput"><span class="identifier">bimap</span></code>. If the
  703. rearrangement fails, the element is erased. Rearrangement is successful
  704. if
  705. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
  706. <li class="listitem">
  707. the map view is non-unique OR no other element with equivalent
  708. key exists,
  709. </li>
  710. <li class="listitem">
  711. AND rearrangement is allowed by all other views of the <code class="computeroutput"><span class="identifier">bimap</span></code>.
  712. </li>
  713. </ul></div>
  714. </li>
  715. <li class="listitem">
  716. <span class="bold"><strong>Postconditions:</strong></span> Validity of <code class="computeroutput"><span class="identifier">position</span></code> is preserved if the operation
  717. succeeds.
  718. </li>
  719. <li class="listitem">
  720. <span class="bold"><strong>Returns: </strong></span> <code class="computeroutput"><span class="keyword">true</span></code>
  721. if the operation succeeded, <code class="computeroutput"><span class="keyword">false</span></code>
  722. otherwise.
  723. </li>
  724. <li class="listitem">
  725. <a class="link" href="set_of_reference.html#set_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  726. O(M(n)).
  727. </li>
  728. <li class="listitem">
  729. <span class="bold"><strong>Exception safety:</strong></span> Basic. If an exception
  730. is thrown by some user-provided operation (except possibly mod),
  731. then the element pointed to by position is erased.
  732. </li>
  733. <li class="listitem">
  734. <span class="bold"><strong>Note:</strong></span> Only provided for map views.
  735. </li>
  736. </ul></div>
  737. <a name="reference_set_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>
  738. <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>
  739. </pre>
  740. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  741. <li class="listitem">
  742. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">DataModifier</span></code>
  743. is a model of <a href="https://www.boost.org/sgi/stl/UnaryFunction.html" target="_top">Unary
  744. 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>
  745. is a valid dereferenceable iterator of the view.
  746. </li>
  747. <li class="listitem">
  748. <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
  749. by position and rearranges <code class="computeroutput"><span class="special">*</span><span class="identifier">position</span></code> into all the views of
  750. the <code class="computeroutput"><span class="identifier">bimap</span></code>. If the
  751. rearrangement fails, the element is erased. Rearrangement is successful
  752. if
  753. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
  754. <li class="listitem">
  755. the oppositte map view is non-unique OR no other element with
  756. equivalent key in that view exists,
  757. </li>
  758. <li class="listitem">
  759. AND rearrangement is allowed by all other views of the <code class="computeroutput"><span class="identifier">bimap</span></code>.
  760. </li>
  761. </ul></div>
  762. </li>
  763. <li class="listitem">
  764. <span class="bold"><strong>Postconditions:</strong></span> Validity of <code class="computeroutput"><span class="identifier">position</span></code> is preserved if the operation
  765. succeeds.
  766. </li>
  767. <li class="listitem">
  768. <span class="bold"><strong>Returns: </strong></span> <code class="computeroutput"><span class="keyword">true</span></code>
  769. if the operation succeeded, <code class="computeroutput"><span class="keyword">false</span></code>
  770. otherwise.
  771. </li>
  772. <li class="listitem">
  773. <a class="link" href="set_of_reference.html#set_of_complexity_signature"><span class="bold"><strong>Complexity:</strong></span></a>
  774. O(M(n)).
  775. </li>
  776. <li class="listitem">
  777. <span class="bold"><strong>Exception safety:</strong></span> Basic. If an exception
  778. is thrown by some user-provided operation (except possibly mod),
  779. then the element pointed to by position is erased.
  780. </li>
  781. <li class="listitem">
  782. <span class="bold"><strong>Note:</strong></span> Only provided for map views.
  783. </li>
  784. </ul></div>
  785. </div>
  786. <div class="section">
  787. <div class="titlepage"><div><div><h5 class="title">
  788. <a name="boost_bimap.reference.set_of_reference.__multi__set_of_views.set_operations"></a><a class="link" href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views.set_operations" title="Set operations">Set
  789. operations</a>
  790. </h5></div></div></div>
  791. <p>
  792. <code class="computeroutput"><span class="special">[</span><span class="identifier">multi</span><span class="special">]</span><span class="identifier">set_of</span></code>
  793. views provide the full lookup functionality required by <a href="https://www.boost.org/sgi/stl/SortedAssociativeContainer.html" target="_top">Sorted
  794. Associative Container</a> and <a href="https://www.boost.org/sgi/stl/UniqueAssociativeContainer.html" target="_top">Unique
  795. Associative Container</a>, namely <code class="computeroutput"><span class="identifier">find</span></code>,
  796. <code class="computeroutput"><span class="identifier">count</span></code>, <code class="computeroutput"><span class="identifier">lower_bound</span></code>, <code class="computeroutput"><span class="identifier">upper_bound</span></code>
  797. and <code class="computeroutput"><span class="identifier">equal_range</span></code>. Additionally,
  798. these member functions are templatized to allow for non-standard arguments,
  799. so extending the types of search operations allowed.
  800. </p>
  801. <p>
  802. A type <code class="computeroutput"><span class="identifier">CompatibleKey</span></code>
  803. is said to be a <span class="emphasis"><em>compatible key</em></span> of <code class="computeroutput"><span class="identifier">Compare</span></code> if <code class="computeroutput"><span class="special">(</span><span class="identifier">CompatibleKey</span><span class="special">,</span>
  804. <span class="identifier">Compare</span><span class="special">)</span></code>
  805. is a compatible extension of <code class="computeroutput"><span class="identifier">Compare</span></code>.
  806. This implies that <code class="computeroutput"><span class="identifier">Compare</span></code>,
  807. as well as being a strict weak ordering, accepts arguments of type <code class="computeroutput"><span class="identifier">CompatibleKey</span></code>, which usually means
  808. it has several overloads of <code class="computeroutput"><span class="keyword">operator</span><span class="special">()</span></code>.
  809. </p>
  810. <a name="reference_set_of_find_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>
  811. <span class="identifier">iterator</span> <span class="identifier">find</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>
  812. <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>
  813. <span class="identifier">const_iterator</span> <span class="identifier">find</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> <span class="keyword">const</span><span class="special">;</span>
  814. </pre>
  815. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  816. <li class="listitem">
  817. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">CompatibleKey</span></code>
  818. is a compatible key of <code class="computeroutput"><span class="identifier">key_compare</span></code>.
  819. </li>
  820. <li class="listitem">
  821. <span class="bold"><strong>Effects:</strong></span> Returns a pointer to an
  822. element whose key is equivalent to <code class="computeroutput"><span class="identifier">x</span></code>,
  823. or <code class="computeroutput"><span class="identifier">end</span><span class="special">()</span></code>
  824. if such an element does not exist.
  825. </li>
  826. <li class="listitem">
  827. <span class="bold"><strong>Complexity:</strong></span> O(log(n)).
  828. </li>
  829. </ul></div>
  830. <a name="reference_set_of_count_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>
  831. <span class="identifier">size_type</span> <span class="identifier">count</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">key_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
  832. </pre>
  833. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  834. <li class="listitem">
  835. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">CompatibleKey</span></code>
  836. is a compatible key of <code class="computeroutput"><span class="identifier">key_compare</span></code>.
  837. </li>
  838. <li class="listitem">
  839. <span class="bold"><strong>Effects:</strong></span> Returns the number of elements
  840. with key equivalent to <code class="computeroutput"><span class="identifier">x</span></code>.
  841. </li>
  842. <li class="listitem">
  843. <span class="bold"><strong>Complexity:</strong></span> O(log(n) + count(x)).
  844. </li>
  845. </ul></div>
  846. <a name="reference_set_of_lower_bound_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>
  847. <span class="identifier">iterator</span> <span class="identifier">lower_bound</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">key_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
  848. <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>
  849. <span class="identifier">const_iterator</span> <span class="identifier">lower_bound</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">key_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
  850. </pre>
  851. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  852. <li class="listitem">
  853. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">CompatibleKey</span></code>
  854. is a compatible key of <code class="computeroutput"><span class="identifier">key_compare</span></code>.
  855. </li>
  856. <li class="listitem">
  857. <span class="bold"><strong>Effects:</strong></span> Returns an iterator pointing
  858. to the first element with key not less than <code class="computeroutput"><span class="identifier">x</span></code>,
  859. or <code class="computeroutput"><span class="identifier">end</span><span class="special">()</span></code>
  860. if such an element does not exist.
  861. </li>
  862. <li class="listitem">
  863. <span class="bold"><strong>Complexity:</strong></span> O(log(n)).
  864. </li>
  865. </ul></div>
  866. <a name="reference_set_of_upper_bound_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>
  867. <span class="identifier">iterator</span> <span class="identifier">upper_bound</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">key_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
  868. <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>
  869. <span class="identifier">const_iterator</span> <span class="identifier">upper_bound</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">key_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
  870. </pre>
  871. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  872. <li class="listitem">
  873. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">CompatibleKey</span></code>
  874. is a compatible key of <code class="computeroutput"><span class="identifier">key_compare</span></code>.
  875. </li>
  876. <li class="listitem">
  877. <span class="bold"><strong>Effects:</strong></span> Returns an iterator pointing
  878. to the first element with key greater than <code class="computeroutput"><span class="identifier">x</span></code>,
  879. or <code class="computeroutput"><span class="identifier">end</span><span class="special">()</span></code>
  880. if such an element does not exist.
  881. </li>
  882. <li class="listitem">
  883. <span class="bold"><strong>Complexity:</strong></span> O(log(n)).
  884. </li>
  885. </ul></div>
  886. <a name="reference_set_of_equal_range_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>
  887. <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="identifier">iterator</span><span class="special">&gt;</span>
  888. <span class="identifier">equal_range</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">key_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span>
  889. <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>
  890. <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">const_iterator</span><span class="special">,</span><span class="identifier">const_iterator</span><span class="special">&gt;</span>
  891. <span class="identifier">equal_range</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">key_type</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
  892. </pre>
  893. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  894. <li class="listitem">
  895. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">CompatibleKey</span></code>
  896. is a compatible key of <code class="computeroutput"><span class="identifier">key_compare</span></code>.
  897. </li>
  898. <li class="listitem">
  899. <span class="bold"><strong>Effects:</strong></span> Equivalent to <code class="computeroutput"><span class="identifier">make_pair</span><span class="special">(</span><span class="identifier">lower_bound</span><span class="special">(</span><span class="identifier">x</span><span class="special">),</span><span class="identifier">upper_bound</span><span class="special">(</span><span class="identifier">x</span><span class="special">))</span></code>.
  900. </li>
  901. <li class="listitem">
  902. <span class="bold"><strong>Complexity:</strong></span> O(log(n)).
  903. </li>
  904. </ul></div>
  905. </div>
  906. <div class="section">
  907. <div class="titlepage"><div><div><h5 class="title">
  908. <a name="boost_bimap.reference.set_of_reference.__multi__set_of_views.range_operations"></a><a class="link" href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views.range_operations" title="Range operations">Range
  909. operations</a>
  910. </h5></div></div></div>
  911. <p>
  912. The member function range is not defined for sorted associative containers,
  913. but <code class="computeroutput"><span class="special">[</span><span class="identifier">multi</span><span class="special">]</span><span class="identifier">set_of</span></code>
  914. map views provide it as a convenient utility. A range or interval is
  915. defined by two conditions for the lower and upper bounds, which are modelled
  916. after the following concepts.
  917. </p>
  918. <p>
  919. Consider a <a href="https://www.boost.org/sgi/stl/StrictWeakOrdering.html" target="_top">Strict
  920. Weak Ordering</a> <code class="computeroutput"><span class="identifier">Compare</span></code>
  921. over values of type Key. A type <code class="computeroutput"><span class="identifier">LowerBounder</span></code>
  922. is said to be a lower bounder of <code class="computeroutput"><span class="identifier">Compare</span></code>
  923. if
  924. </p>
  925. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  926. <li class="listitem">
  927. <code class="computeroutput"><span class="identifier">LowerBounder</span></code> is a
  928. <code class="computeroutput"><span class="identifier">Predicate</span></code> over <code class="computeroutput"><span class="identifier">Key</span></code>,
  929. </li>
  930. <li class="listitem">
  931. if <code class="computeroutput"><span class="identifier">lower</span><span class="special">(</span><span class="identifier">k1</span><span class="special">)</span></code>
  932. and <code class="computeroutput"><span class="special">!</span><span class="identifier">comp</span><span class="special">(</span><span class="identifier">k2</span><span class="special">,</span><span class="identifier">k1</span><span class="special">)</span></code> then <code class="computeroutput"><span class="identifier">lower</span><span class="special">(</span><span class="identifier">k2</span><span class="special">)</span></code>,
  933. </li>
  934. </ul></div>
  935. <p>
  936. for every <code class="computeroutput"><span class="identifier">lower</span></code> of type
  937. <code class="computeroutput"><span class="identifier">LowerBounder</span></code>, <code class="computeroutput"><span class="identifier">comp</span></code> of type <code class="computeroutput"><span class="identifier">Compare</span></code>,
  938. and <code class="computeroutput"><span class="identifier">k1</span></code>, <code class="computeroutput"><span class="identifier">k2</span></code> of type <code class="computeroutput"><span class="identifier">Key</span></code>.
  939. Similarly, an upper bounder is a type <code class="computeroutput"><span class="identifier">UpperBounder</span></code>
  940. such that
  941. </p>
  942. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  943. <li class="listitem">
  944. <code class="computeroutput"><span class="identifier">UpperBounder</span></code> is a
  945. <code class="computeroutput"><span class="identifier">Predicate</span></code> over <code class="computeroutput"><span class="identifier">Key</span></code>,
  946. </li>
  947. <li class="listitem">
  948. if <code class="computeroutput"><span class="identifier">upper</span><span class="special">(</span><span class="identifier">k1</span><span class="special">)</span></code>
  949. and <code class="computeroutput"><span class="special">!</span><span class="identifier">comp</span><span class="special">(</span><span class="identifier">k1</span><span class="special">,</span><span class="identifier">k2</span><span class="special">)</span></code> then <code class="computeroutput"><span class="identifier">upper</span><span class="special">(</span><span class="identifier">k2</span><span class="special">)</span></code>,
  950. </li>
  951. </ul></div>
  952. <p>
  953. for every <code class="computeroutput"><span class="identifier">upper</span></code> of type
  954. <code class="computeroutput"><span class="identifier">UpperBounder</span></code>, <code class="computeroutput"><span class="identifier">comp</span></code> of type <code class="computeroutput"><span class="identifier">Compare</span></code>,
  955. and <code class="computeroutput"><span class="identifier">k1</span></code>, <code class="computeroutput"><span class="identifier">k2</span></code> of type <code class="computeroutput"><span class="identifier">Key</span></code>.
  956. </p>
  957. <a name="reference_set_of_range_lower_upper"></a><pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">class</span> <span class="identifier">LowerBounder</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">UpperBounder</span><span class="special">&gt;</span>
  958. <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">const_iterator</span><span class="special">,</span><span class="identifier">const_iterator</span><span class="special">&gt;</span> <span class="identifier">range</span><span class="special">(</span>
  959. <span class="identifier">LowerBounder</span> <span class="identifier">lower</span><span class="special">,</span> <span class="identifier">UpperBounder</span> <span class="identifier">upper</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
  960. </pre>
  961. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  962. <li class="listitem">
  963. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">LowerBounder</span></code>
  964. and <code class="computeroutput"><span class="identifier">UpperBounder</span></code>
  965. are a lower and upper bounder of <code class="computeroutput"><span class="identifier">key_compare</span></code>,
  966. respectively.
  967. </li>
  968. <li class="listitem">
  969. <span class="bold"><strong>Effects:</strong></span> Returns a pair of iterators
  970. pointing to the beginning and one past the end of the subsequence
  971. of elements satisfying lower and upper simultaneously. If no such
  972. elements exist, the iterators both point to the first element satisfying
  973. lower, or else are equal to <code class="computeroutput"><span class="identifier">end</span><span class="special">()</span></code> if this latter element does not
  974. exist.
  975. </li>
  976. <li class="listitem">
  977. <span class="bold"><strong>Complexity:</strong></span> O(log(n)).
  978. </li>
  979. <li class="listitem">
  980. <span class="bold"><strong>Variants:</strong></span> In place of lower or upper
  981. (or both), the singular value <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">bimap</span><span class="special">::</span><span class="identifier">unbounded</span></code>
  982. can be provided. This acts as a predicate which all values of type
  983. <code class="computeroutput"><span class="identifier">key_type</span></code> satisfy.
  984. </li>
  985. <li class="listitem">
  986. <span class="bold"><strong>Note:</strong></span> Only provided for map views.
  987. </li>
  988. </ul></div>
  989. </div>
  990. <div class="section">
  991. <div class="titlepage"><div><div><h5 class="title">
  992. <a name="boost_bimap.reference.set_of_reference.__multi__set_of_views.at____info_at___and_operator_______set_of_only"></a><a class="link" href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views.at____info_at___and_operator_______set_of_only" title="at(), info_at() and operator[] - set_of only">at(),
  993. info_at() and operator[] - set_of only</a>
  994. </h5></div></div></div>
  995. <a name="reference_set_of_at_key_const"></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>
  996. <span class="keyword">const</span> <span class="identifier">mapped_type</span> <span class="special">&amp;</span> <span class="identifier">at</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">CompatibleKey</span> <span class="special">&amp;</span> <span class="identifier">k</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
  997. </pre>
  998. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  999. <li class="listitem">
  1000. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">CompatibleKey</span></code>
  1001. is a compatible key of <code class="computeroutput"><span class="identifier">key_compare</span></code>.
  1002. </li>
  1003. <li class="listitem">
  1004. <span class="bold"><strong>Effects:</strong></span> Returns the <code class="computeroutput"><span class="identifier">mapped_type</span></code> reference that is associated
  1005. with <code class="computeroutput"><span class="identifier">k</span></code>, or throws
  1006. <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">out_of_range</span></code> if such key does not
  1007. exist.
  1008. </li>
  1009. <li class="listitem">
  1010. <span class="bold"><strong>Complexity:</strong></span> O(log(n)).
  1011. </li>
  1012. <li class="listitem">
  1013. <span class="bold"><strong>Note:</strong></span> Only provided when <code class="computeroutput"><span class="identifier">set_of</span></code> is used.
  1014. </li>
  1015. </ul></div>
  1016. <p>
  1017. The symmetry of bimap imposes some constraints on <code class="computeroutput"><span class="keyword">operator</span><span class="special">[]</span></code> and the non constant version of at()
  1018. that are not found in <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">maps</span></code>.
  1019. Tey are only provided if the other collection type is mutable (<code class="computeroutput"><span class="identifier">list_of</span></code>, <code class="computeroutput"><span class="identifier">vector_of</span></code>
  1020. and <code class="computeroutput"><span class="identifier">unconstrained_set_of</span></code>).
  1021. </p>
  1022. <a name="reference_set_of_operator_bracket_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>
  1023. <span class="identifier">mapped_type</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">[](</span><span class="keyword">const</span> <span class="identifier">CompatibleKey</span> <span class="special">&amp;</span> <span class="identifier">k</span><span class="special">);</span>
  1024. </pre>
  1025. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  1026. <li class="listitem">
  1027. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">CompatibleKey</span></code>
  1028. is a compatible key of <code class="computeroutput"><span class="identifier">key_compare</span></code>.
  1029. </li>
  1030. <li class="listitem">
  1031. <span class="bold"><strong>Effects: </strong></span> <code class="computeroutput"><span class="keyword">return</span>
  1032. <span class="identifier">insert</span><span class="special">(</span><span class="identifier">value_type</span><span class="special">(</span><span class="identifier">k</span><span class="special">,</span><span class="identifier">mapped_type</span><span class="special">()))-&gt;</span><span class="identifier">second</span><span class="special">;</span></code>
  1033. </li>
  1034. <li class="listitem">
  1035. <span class="bold"><strong>Complexity:</strong></span> O(log(n)).
  1036. </li>
  1037. <li class="listitem">
  1038. <span class="bold"><strong>Note:</strong></span> Only provided when <code class="computeroutput"><span class="identifier">set_of</span></code> is used and the other collection
  1039. type is mutable.
  1040. </li>
  1041. </ul></div>
  1042. <a name="reference_set_of_at_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>
  1043. <span class="identifier">mapped_type</span> <span class="special">&amp;</span> <span class="identifier">at</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">CompatibleKey</span> <span class="special">&amp;</span> <span class="identifier">k</span><span class="special">);</span>
  1044. </pre>
  1045. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  1046. <li class="listitem">
  1047. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">CompatibleKey</span></code>
  1048. is a compatible key of <code class="computeroutput"><span class="identifier">key_compare</span></code>.
  1049. </li>
  1050. <li class="listitem">
  1051. <span class="bold"><strong>Effects: </strong></span> Returns the <code class="computeroutput"><span class="identifier">mapped_type</span></code> reference that is associated
  1052. with <code class="computeroutput"><span class="identifier">k</span></code>, or throws
  1053. <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">out_of_range</span></code> if such key does not
  1054. exist.
  1055. </li>
  1056. <li class="listitem">
  1057. <span class="bold"><strong>Complexity:</strong></span> O(log(n)).
  1058. </li>
  1059. <li class="listitem">
  1060. <span class="bold"><strong>Note:</strong></span> Only provided when <code class="computeroutput"><span class="identifier">set_of</span></code> is used and the other collection
  1061. type is mutable.
  1062. </li>
  1063. </ul></div>
  1064. <a name="reference_set_of_info_at_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>
  1065. <span class="identifier">info_type</span> <span class="special">&amp;</span> <span class="identifier">info_at</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">CompatibleKey</span> <span class="special">&amp;</span> <span class="identifier">k</span><span class="special">);</span>
  1066. <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>
  1067. <span class="keyword">const</span> <span class="identifier">info_type</span> <span class="special">&amp;</span> <span class="identifier">info_at</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">CompatibleKey</span> <span class="special">&amp;</span> <span class="identifier">k</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
  1068. </pre>
  1069. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  1070. <li class="listitem">
  1071. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">CompatibleKey</span></code>
  1072. is a compatible key of <code class="computeroutput"><span class="identifier">key_compare</span></code>.
  1073. </li>
  1074. <li class="listitem">
  1075. <span class="bold"><strong>Effects:</strong></span> Returns the <code class="computeroutput"><span class="identifier">info_type</span></code> reference that is associated
  1076. with <code class="computeroutput"><span class="identifier">k</span></code>, or throws
  1077. <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">out_of_range</span></code> if such key does not
  1078. exist.
  1079. </li>
  1080. <li class="listitem">
  1081. <span class="bold"><strong>Complexity:</strong></span> O(log(n)).
  1082. </li>
  1083. <li class="listitem">
  1084. <span class="bold"><strong>Note:</strong></span> Only provided when <code class="computeroutput"><span class="identifier">set_of</span></code> and <code class="computeroutput"><span class="identifier">info_hook</span></code>
  1085. are used
  1086. </li>
  1087. </ul></div>
  1088. </div>
  1089. <div class="section">
  1090. <div class="titlepage"><div><div><h5 class="title">
  1091. <a name="boost_bimap.reference.set_of_reference.__multi__set_of_views.serialization"></a><a class="link" href="set_of_reference.html#boost_bimap.reference.set_of_reference.__multi__set_of_views.serialization" title="Serialization">Serialization</a>
  1092. </h5></div></div></div>
  1093. <p>
  1094. 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.
  1095. In describing the additional preconditions and guarantees associated
  1096. to <code class="computeroutput"><span class="special">[</span><span class="identifier">multi</span><span class="special">]</span><span class="identifier">set_of</span></code>
  1097. views with respect to serialization of their embedding containers, we
  1098. use the concepts defined in the <code class="computeroutput"><span class="identifier">bimap</span></code>
  1099. serialization section.
  1100. </p>
  1101. <div class="blurb">
  1102. <div class="titlepage"><div><div><p class="title"><b></b></p></div></div></div>
  1103. <p>
  1104. <span class="bold"><strong>Operation:</strong></span> saving of a <code class="computeroutput"><span class="identifier">bimap</span></code> m to an output archive (XML archive)
  1105. ar.
  1106. </p>
  1107. </div>
  1108. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
  1109. <span class="bold"><strong>Requires:</strong></span> No additional requirements
  1110. to those imposed by the container.
  1111. </li></ul></div>
  1112. <div class="blurb">
  1113. <div class="titlepage"><div><div><p class="title"><b></b></p></div></div></div>
  1114. <p>
  1115. <span class="bold"><strong>Operation:</strong></span> loading of a <code class="computeroutput"><span class="identifier">bimap</span></code> m' from an input archive (XML
  1116. archive) ar.
  1117. </p>
  1118. </div>
  1119. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  1120. <li class="listitem">
  1121. <span class="bold"><strong>Requires:</strong></span> In addition to the general
  1122. requirements, <code class="computeroutput"><span class="identifier">value_comp</span><span class="special">()</span></code> must be serialization-compatible
  1123. with <code class="computeroutput"><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">value_comp</span><span class="special">()</span></code>,
  1124. where i is the position of the ordered view in the container.
  1125. </li>
  1126. <li class="listitem">
  1127. <span class="bold"><strong>Postconditions:</strong></span> On successful loading,
  1128. each of the elements of <code class="computeroutput"><span class="special">[</span><span class="identifier">begin</span><span class="special">(),</span>
  1129. <span class="identifier">end</span><span class="special">())</span></code>
  1130. 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>.
  1131. </li>
  1132. </ul></div>
  1133. <div class="blurb">
  1134. <div class="titlepage"><div><div><p class="title"><b></b></p></div></div></div>
  1135. <p>
  1136. <span class="bold"><strong>Operation:</strong></span> saving of an iterator or
  1137. <code class="computeroutput"><span class="identifier">const_iterator</span></code> it to
  1138. an output archive (XML archive) ar.
  1139. </p>
  1140. </div>
  1141. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
  1142. <span class="bold"><strong>Requires: </strong></span> <code class="computeroutput"><span class="identifier">it</span></code>
  1143. is a valid iterator of the view. The associated <code class="computeroutput"><span class="identifier">bimap</span></code>
  1144. has been previously saved.
  1145. </li></ul></div>
  1146. <div class="blurb">
  1147. <div class="titlepage"><div><div><p class="title"><b></b></p></div></div></div>
  1148. <p>
  1149. <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>
  1150. <code class="computeroutput"><span class="identifier">it</span></code>' from an input archive
  1151. ( XML archive) ar.
  1152. </p>
  1153. </div>
  1154. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  1155. <li class="listitem">
  1156. <span class="bold"><strong>Postconditions:</strong></span> On successful loading,
  1157. 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>,
  1158. otherwise <code class="computeroutput"><span class="identifier">it</span></code>'<code class="computeroutput">
  1159. <span class="special">==</span> <span class="identifier">end</span><span class="special">()</span></code>.
  1160. </li>
  1161. <li class="listitem">
  1162. <span class="bold"><strong>Note:</strong></span> It is allowed that it be a
  1163. <code class="computeroutput"><span class="identifier">const_iterator</span></code> and
  1164. the restored <code class="computeroutput"><span class="identifier">it</span></code>'
  1165. an iterator, or viceversa.
  1166. </li>
  1167. </ul></div>
  1168. </div>
  1169. </div>
  1170. </div>
  1171. <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
  1172. <td align="left"></td>
  1173. <td align="right"><div class="copyright-footer">Copyright &#169; 2006-2012 Matias Capeletto<p>
  1174. Distributed under the Boost Software License, Version 1.0. (See accompanying
  1175. 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>)
  1176. </p>
  1177. </div></td>
  1178. </tr></table>
  1179. <hr>
  1180. <div class="spirit-nav">
  1181. <a accesskey="p" href="bimap_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="unordered_set_of_reference.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
  1182. </div>
  1183. </body>
  1184. </html>