unordered_set_of_reference.html 116 KB

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