bimaps_with_user_defined_names.html 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
  4. <title>Bimaps with user defined names</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="../the_tutorial.html" title="The tutorial">
  9. <link rel="prev" href="useful_functions.html" title="Useful functions">
  10. <link rel="next" href="unconstrained_sets.html" title="Unconstrained Sets">
  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="useful_functions.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../the_tutorial.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="unconstrained_sets.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.the_tutorial.bimaps_with_user_defined_names"></a><a class="link" href="bimaps_with_user_defined_names.html" title="Bimaps with user defined names">Bimaps
  28. with user defined names</a>
  29. </h3></div></div></div>
  30. <p>
  31. In the following example, the library user inserted comments to guide future
  32. programmers:
  33. </p>
  34. <p>
  35. <a href="../../../../example/user_defined_names.cpp" target="_top">Go to source code</a>
  36. </p>
  37. <p>
  38. </p>
  39. <pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">bimap</span>
  40. <span class="special">&lt;</span>
  41. <span class="identifier">multiset_of</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&gt;,</span>
  42. <span class="keyword">int</span>
  43. <span class="special">&gt;</span> <span class="identifier">People</span><span class="special">;</span>
  44. <span class="identifier">People</span> <span class="identifier">people</span><span class="special">;</span>
  45. <span class="comment">// ...</span>
  46. <span class="keyword">int</span> <span class="identifier">user_id</span><span class="special">;</span>
  47. <span class="identifier">std</span><span class="special">::</span><span class="identifier">cin</span> <span class="special">&gt;&gt;</span> <span class="identifier">user_id</span><span class="special">;</span>
  48. <span class="comment">// people.right : map&lt;id,name&gt;</span>
  49. <span class="identifier">People</span><span class="special">::</span><span class="identifier">right_const_iterator</span> <span class="identifier">id_iter</span> <span class="special">=</span> <span class="identifier">people</span><span class="special">.</span><span class="identifier">right</span><span class="special">.</span><span class="identifier">find</span><span class="special">(</span><span class="identifier">user_id</span><span class="special">);</span>
  50. <span class="keyword">if</span><span class="special">(</span> <span class="identifier">id_iter</span> <span class="special">!=</span> <span class="identifier">people</span><span class="special">.</span><span class="identifier">right</span><span class="special">.</span><span class="identifier">end</span><span class="special">()</span> <span class="special">)</span>
  51. <span class="special">{</span>
  52. <span class="comment">// first : id</span>
  53. <span class="comment">// second : name</span>
  54. <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"name: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">id_iter</span><span class="special">-&gt;</span><span class="identifier">second</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span>
  55. <span class="special">&lt;&lt;</span> <span class="string">"id: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">id_iter</span><span class="special">-&gt;</span><span class="identifier">first</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
  56. <span class="special">}</span>
  57. <span class="keyword">else</span>
  58. <span class="special">{</span>
  59. <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Unknown id, users are:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
  60. <span class="comment">// people.left : map&lt;name,id&gt;</span>
  61. <span class="keyword">for</span><span class="special">(</span> <span class="identifier">People</span><span class="special">::</span><span class="identifier">left_const_iterator</span>
  62. <span class="identifier">name_iter</span> <span class="special">=</span> <span class="identifier">people</span><span class="special">.</span><span class="identifier">left</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span>
  63. <span class="identifier">iend</span> <span class="special">=</span> <span class="identifier">people</span><span class="special">.</span><span class="identifier">left</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span>
  64. <span class="identifier">name_iter</span> <span class="special">!=</span> <span class="identifier">iend</span><span class="special">;</span> <span class="special">++</span><span class="identifier">name_iter</span> <span class="special">)</span>
  65. <span class="special">{</span>
  66. <span class="comment">// first : name</span>
  67. <span class="comment">// second : id</span>
  68. <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"name: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">name_iter</span><span class="special">-&gt;</span><span class="identifier">first</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span>
  69. <span class="special">&lt;&lt;</span> <span class="string">"id: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">name_iter</span><span class="special">-&gt;</span><span class="identifier">second</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
  70. <span class="special">}</span>
  71. <span class="special">}</span>
  72. </pre>
  73. <p>
  74. </p>
  75. <p>
  76. In Boost.Bimap there is a better way to document the code and in the meantime
  77. helping you to write more maintainable and readable code. You can tag the
  78. two collections of the bimap so they can be accessed by more descriptive
  79. names.
  80. </p>
  81. <p>
  82. <span class="inlinemediaobject"><img src="../../images/bimap/tagged.png" alt="tagged"></span>
  83. </p>
  84. <p>
  85. A tagged type is a type that has been labelled using a tag. A tag is any
  86. valid C++ type. In a bimap, the types are always tagged. If you do not specify
  87. your own tag, the container uses <code class="computeroutput"><span class="identifier">member_at</span><span class="special">::</span><span class="identifier">left</span></code>
  88. and <code class="computeroutput"><span class="identifier">member_at</span><span class="special">::</span><span class="identifier">right</span></code> to tag the left and right sides respectively.
  89. In order to specify a custom tag, the type of each side has to be tagged.
  90. Tagging a type is very simple:
  91. </p>
  92. <pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">tagged</span><span class="special">&lt;</span> <span class="keyword">int</span><span class="special">,</span> <span class="identifier">a_tag</span> <span class="special">&gt;</span> <span class="identifier">tagged_int</span><span class="special">;</span>
  93. </pre>
  94. <p>
  95. Now we can rewrite the example:
  96. </p>
  97. <p>
  98. <a href="../../../../example/user_defined_names.cpp" target="_top">Go to source code</a>
  99. </p>
  100. <p>
  101. </p>
  102. <pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">id</span> <span class="special">{};</span> <span class="comment">// Tag for the identification number</span>
  103. <span class="keyword">struct</span> <span class="identifier">name</span> <span class="special">{};</span> <span class="comment">// Tag for the name of the person</span>
  104. <span class="keyword">typedef</span> <span class="identifier">bimap</span>
  105. <span class="special">&lt;</span>
  106. <span class="identifier">tagged</span><span class="special">&lt;</span> <span class="keyword">int</span> <span class="special">,</span> <span class="identifier">id</span> <span class="special">&gt;</span> <span class="special">,</span>
  107. <span class="identifier">multiset_of</span><span class="special">&lt;</span> <span class="identifier">tagged</span><span class="special">&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">,</span> <span class="identifier">name</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
  108. <span class="special">&gt;</span> <span class="identifier">People</span><span class="special">;</span>
  109. <span class="identifier">People</span> <span class="identifier">people</span><span class="special">;</span>
  110. <span class="comment">// ...</span>
  111. <span class="keyword">int</span> <span class="identifier">user_id</span><span class="special">;</span>
  112. <span class="identifier">std</span><span class="special">::</span><span class="identifier">cin</span> <span class="special">&gt;&gt;</span> <span class="identifier">user_id</span><span class="special">;</span>
  113. <span class="identifier">People</span><span class="special">::</span><span class="identifier">map_by</span><span class="special">&lt;</span><span class="identifier">id</span><span class="special">&gt;::</span><span class="identifier">const_iterator</span> <span class="identifier">id_iter</span> <span class="special">=</span> <span class="identifier">people</span><span class="special">.</span><span class="identifier">by</span><span class="special">&lt;</span><span class="identifier">id</span><span class="special">&gt;().</span><span class="identifier">find</span><span class="special">(</span><span class="identifier">user_id</span><span class="special">);</span>
  114. <span class="keyword">if</span><span class="special">(</span> <span class="identifier">id_iter</span> <span class="special">!=</span> <span class="identifier">people</span><span class="special">.</span><span class="identifier">by</span><span class="special">&lt;</span><span class="identifier">id</span><span class="special">&gt;().</span><span class="identifier">end</span><span class="special">()</span> <span class="special">)</span>
  115. <span class="special">{</span>
  116. <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"name: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">id_iter</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">&lt;</span><span class="identifier">name</span><span class="special">&gt;()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span>
  117. <span class="special">&lt;&lt;</span> <span class="string">"id: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">id_iter</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">&lt;</span><span class="identifier">id</span><span class="special">&gt;()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
  118. <span class="special">}</span>
  119. <span class="keyword">else</span>
  120. <span class="special">{</span>
  121. <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Unknown id, users are:"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
  122. <span class="keyword">for</span><span class="special">(</span> <span class="identifier">People</span><span class="special">::</span><span class="identifier">map_by</span><span class="special">&lt;</span><span class="identifier">name</span><span class="special">&gt;::</span><span class="identifier">const_iterator</span>
  123. <span class="identifier">name_iter</span> <span class="special">=</span> <span class="identifier">people</span><span class="special">.</span><span class="identifier">by</span><span class="special">&lt;</span><span class="identifier">name</span><span class="special">&gt;().</span><span class="identifier">begin</span><span class="special">(),</span>
  124. <span class="identifier">iend</span> <span class="special">=</span> <span class="identifier">people</span><span class="special">.</span><span class="identifier">by</span><span class="special">&lt;</span><span class="identifier">name</span><span class="special">&gt;().</span><span class="identifier">end</span><span class="special">();</span>
  125. <span class="identifier">name_iter</span> <span class="special">!=</span> <span class="identifier">iend</span><span class="special">;</span> <span class="special">++</span><span class="identifier">name_iter</span> <span class="special">)</span>
  126. <span class="special">{</span>
  127. <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"name: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">name_iter</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">&lt;</span><span class="identifier">name</span><span class="special">&gt;()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span>
  128. <span class="special">&lt;&lt;</span> <span class="string">"id: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">name_iter</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">&lt;</span><span class="identifier">id</span><span class="special">&gt;()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
  129. <span class="special">}</span>
  130. <span class="special">}</span>
  131. </pre>
  132. <p>
  133. </p>
  134. <p>
  135. Here is a list of common structures in both tagged and untagged versions.
  136. Remember that when the bimap has user defined tags you can still use the
  137. untagged version structures.
  138. </p>
  139. <pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">Left</span> <span class="special">{};</span>
  140. <span class="keyword">struct</span> <span class="identifier">Right</span> <span class="special">{};</span>
  141. <span class="keyword">typedef</span> <span class="identifier">bimap</span><span class="special">&lt;</span>
  142. <span class="identifier">multiset_of</span><span class="special">&lt;</span> <span class="identifier">tagged</span><span class="special">&lt;</span> <span class="keyword">int</span><span class="special">,</span> <span class="identifier">Left</span> <span class="special">&gt;</span> <span class="special">&gt;,</span>
  143. <span class="identifier">unordered_set_of</span><span class="special">&lt;</span> <span class="identifier">tagged</span><span class="special">&lt;</span> <span class="keyword">int</span><span class="special">,</span> <span class="identifier">Right</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
  144. <span class="special">&gt;</span> <span class="identifier">bm_type</span><span class="special">;</span>
  145. <span class="identifier">bm_type</span> <span class="identifier">bm</span><span class="special">;</span>
  146. <span class="comment">//...</span>
  147. <span class="identifier">bm_type</span><span class="special">::</span><span class="identifier">iterator</span> <span class="identifier">iter</span> <span class="special">=</span> <span class="identifier">bm</span><span class="special">.</span><span class="identifier">begin</span><span class="special">();</span>
  148. <span class="identifier">bm_type</span><span class="special">::</span><span class="identifier">left_iterator</span> <span class="identifier">left_iter</span> <span class="special">=</span> <span class="identifier">bm</span><span class="special">.</span><span class="identifier">left</span><span class="special">.</span><span class="identifier">begin</span><span class="special">();</span>
  149. <span class="identifier">bm_type</span><span class="special">::</span><span class="identifier">right_iterator</span> <span class="identifier">right_iter</span> <span class="special">=</span> <span class="identifier">bm</span><span class="special">.</span><span class="identifier">right</span><span class="special">.</span><span class="identifier">begin</span><span class="special">();</span>
  150. </pre>
  151. <div class="table">
  152. <a name="boost_bimap.the_tutorial.bimaps_with_user_defined_names.t0"></a><p class="title"><b>Table&#160;1.3.&#160;Equivalence of expresions using user defined names</b></p>
  153. <div class="table-contents"><table class="table" summary="Equivalence of expresions using user defined names">
  154. <colgroup>
  155. <col>
  156. <col>
  157. </colgroup>
  158. <thead><tr>
  159. <th>
  160. <p>
  161. Untagged version
  162. </p>
  163. </th>
  164. <th>
  165. <p>
  166. Tagged version
  167. </p>
  168. </th>
  169. </tr></thead>
  170. <tbody>
  171. <tr>
  172. <td>
  173. <p>
  174. <code class="computeroutput"><span class="identifier">bm</span><span class="special">.</span><span class="identifier">left</span></code>
  175. </p>
  176. </td>
  177. <td>
  178. <p>
  179. <code class="computeroutput"><span class="identifier">bm</span><span class="special">.</span><span class="identifier">by</span><span class="special">&lt;</span><span class="identifier">Left</span><span class="special">&gt;()</span></code>
  180. </p>
  181. </td>
  182. </tr>
  183. <tr>
  184. <td>
  185. <p>
  186. <code class="computeroutput"><span class="identifier">bm</span><span class="special">.</span><span class="identifier">right</span></code>
  187. </p>
  188. </td>
  189. <td>
  190. <p>
  191. <code class="computeroutput"><span class="identifier">bm</span><span class="special">.</span><span class="identifier">by</span><span class="special">&lt;</span><span class="identifier">Right</span><span class="special">&gt;()</span></code>
  192. </p>
  193. </td>
  194. </tr>
  195. <tr>
  196. <td>
  197. <p>
  198. <code class="computeroutput"><span class="identifier">bm_type</span><span class="special">::</span><span class="identifier">left_map</span></code>
  199. </p>
  200. </td>
  201. <td>
  202. <p>
  203. <code class="computeroutput"><span class="identifier">bm</span><span class="special">::</span><span class="identifier">map_by</span><span class="special">&lt;</span><span class="identifier">Left</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
  204. </p>
  205. </td>
  206. </tr>
  207. <tr>
  208. <td>
  209. <p>
  210. <code class="computeroutput"><span class="identifier">bm_type</span><span class="special">::</span><span class="identifier">right_value_type</span></code>
  211. </p>
  212. </td>
  213. <td>
  214. <p>
  215. <code class="computeroutput"><span class="identifier">bm</span><span class="special">::</span><span class="identifier">map_by</span><span class="special">&lt;</span><span class="identifier">Right</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code>
  216. </p>
  217. </td>
  218. </tr>
  219. <tr>
  220. <td>
  221. <p>
  222. <code class="computeroutput"><span class="identifier">bm_type</span><span class="special">::</span><span class="identifier">left_iterator</span></code>
  223. </p>
  224. </td>
  225. <td>
  226. <p>
  227. <code class="computeroutput"><span class="identifier">bm</span><span class="special">::</span><span class="identifier">map_by</span><span class="special">&lt;</span><span class="identifier">Left</span><span class="special">&gt;::</span><span class="identifier">iterator</span></code>
  228. </p>
  229. </td>
  230. </tr>
  231. <tr>
  232. <td>
  233. <p>
  234. <code class="computeroutput"><span class="identifier">bm_type</span><span class="special">::</span><span class="identifier">right_const_iterator</span></code>
  235. </p>
  236. </td>
  237. <td>
  238. <p>
  239. <code class="computeroutput"><span class="identifier">bm</span><span class="special">::</span><span class="identifier">map_by</span><span class="special">&lt;</span><span class="identifier">Right</span><span class="special">&gt;::</span><span class="identifier">const_iterator</span></code>
  240. </p>
  241. </td>
  242. </tr>
  243. <tr>
  244. <td>
  245. <p>
  246. <code class="computeroutput"><span class="identifier">iter</span><span class="special">-&gt;</span><span class="identifier">left</span></code>
  247. </p>
  248. </td>
  249. <td>
  250. <p>
  251. <code class="computeroutput"><span class="identifier">iter</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">&lt;</span><span class="identifier">Left</span><span class="special">&gt;()</span></code>
  252. </p>
  253. </td>
  254. </tr>
  255. <tr>
  256. <td>
  257. <p>
  258. <code class="computeroutput"><span class="identifier">iter</span><span class="special">-&gt;</span><span class="identifier">right</span></code>
  259. </p>
  260. </td>
  261. <td>
  262. <p>
  263. <code class="computeroutput"><span class="identifier">iter</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">&lt;</span><span class="identifier">Right</span><span class="special">&gt;()</span></code>
  264. </p>
  265. </td>
  266. </tr>
  267. <tr>
  268. <td>
  269. <p>
  270. <code class="computeroutput"><span class="identifier">left_iter</span><span class="special">-&gt;</span><span class="identifier">first</span></code>
  271. </p>
  272. </td>
  273. <td>
  274. <p>
  275. <code class="computeroutput"><span class="identifier">left_iter</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">&lt;</span><span class="identifier">Left</span><span class="special">&gt;()</span></code>
  276. </p>
  277. </td>
  278. </tr>
  279. <tr>
  280. <td>
  281. <p>
  282. <code class="computeroutput"><span class="identifier">left_iter</span><span class="special">-&gt;</span><span class="identifier">second</span></code>
  283. </p>
  284. </td>
  285. <td>
  286. <p>
  287. <code class="computeroutput"><span class="identifier">left_iter</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">&lt;</span><span class="identifier">Right</span><span class="special">&gt;()</span></code>
  288. </p>
  289. </td>
  290. </tr>
  291. <tr>
  292. <td>
  293. <p>
  294. <code class="computeroutput"><span class="identifier">right_iter</span><span class="special">-&gt;</span><span class="identifier">first</span></code>
  295. </p>
  296. </td>
  297. <td>
  298. <p>
  299. <code class="computeroutput"><span class="identifier">right_iter</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">&lt;</span><span class="identifier">Right</span><span class="special">&gt;()</span></code>
  300. </p>
  301. </td>
  302. </tr>
  303. <tr>
  304. <td>
  305. <p>
  306. <code class="computeroutput"><span class="identifier">right_iter</span><span class="special">-&gt;</span><span class="identifier">second</span></code>
  307. </p>
  308. </td>
  309. <td>
  310. <p>
  311. <code class="computeroutput"><span class="identifier">right_iter</span><span class="special">-&gt;</span><span class="identifier">get</span><span class="special">&lt;</span><span class="identifier">Left</span><span class="special">&gt;()</span></code>
  312. </p>
  313. </td>
  314. </tr>
  315. <tr>
  316. <td>
  317. <p>
  318. <code class="computeroutput"><span class="identifier">bm</span><span class="special">.</span><span class="identifier">project_left</span><span class="special">(</span><span class="identifier">iter</span><span class="special">)</span></code>
  319. </p>
  320. </td>
  321. <td>
  322. <p>
  323. <code class="computeroutput"><span class="identifier">bm</span><span class="special">.</span><span class="identifier">project</span><span class="special">&lt;</span><span class="identifier">Left</span><span class="special">&gt;(</span><span class="identifier">iter</span><span class="special">)</span></code>
  324. </p>
  325. </td>
  326. </tr>
  327. <tr>
  328. <td>
  329. <p>
  330. <code class="computeroutput"><span class="identifier">bm</span><span class="special">.</span><span class="identifier">project_right</span><span class="special">(</span><span class="identifier">iter</span><span class="special">)</span></code>
  331. </p>
  332. </td>
  333. <td>
  334. <p>
  335. <code class="computeroutput"><span class="identifier">bm</span><span class="special">.</span><span class="identifier">project</span><span class="special">&lt;</span><span class="identifier">Right</span><span class="special">&gt;(</span><span class="identifier">iter</span><span class="special">)</span></code>
  336. </p>
  337. </td>
  338. </tr>
  339. </tbody>
  340. </table></div>
  341. </div>
  342. <br class="table-break">
  343. </div>
  344. <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
  345. <td align="left"></td>
  346. <td align="right"><div class="copyright-footer">Copyright &#169; 2006-2012 Matias Capeletto<p>
  347. Distributed under the Boost Software License, Version 1.0. (See accompanying
  348. 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>)
  349. </p>
  350. </div></td>
  351. </tr></table>
  352. <hr>
  353. <div class="spirit-nav">
  354. <a accesskey="p" href="useful_functions.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../the_tutorial.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="unconstrained_sets.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
  355. </div>
  356. </body>
  357. </html>