intersection.html 64 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
  4. <title>Intersection</title>
  5. <link rel="stylesheet" href="../../../../../../doc/src/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.Icl">
  8. <link rel="up" href="../function_reference.html" title="Function Reference">
  9. <link rel="prev" href="erasure.html" title="Erasure">
  10. <link rel="next" href="symmetric_difference.html" title="Symmetric Difference">
  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="../../../../../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="erasure.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../function_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="symmetric_difference.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_icl.function_reference.intersection"></a><a class="link" href="intersection.html" title="Intersection">Intersection</a>
  28. </h3></div></div></div>
  29. <div class="toc"><dl class="toc">
  30. <dt><span class="section"><a href="intersection.html#boost_icl.function_reference.intersection.synopsis">Synopsis</a></span></dt>
  31. <dt><span class="section"><a href="intersection.html#boost_icl.function_reference.intersection.functions">Functions</a></span></dt>
  32. <dt><span class="section"><a href="intersection.html#boost_icl.function_reference.intersection.inplace_operators">Inplace
  33. operators</a></span></dt>
  34. <dt><span class="section"><a href="intersection.html#boost_icl.function_reference.intersection.infix_operators">Infix
  35. operators</a></span></dt>
  36. <dt><span class="section"><a href="intersection.html#boost_icl.function_reference.intersection.intersection_tester">Intersection
  37. tester</a></span></dt>
  38. </dl></div>
  39. <div class="section">
  40. <div class="titlepage"><div><div><h4 class="title">
  41. <a name="boost_icl.function_reference.intersection.synopsis"></a><a class="link" href="intersection.html#boost_icl.function_reference.intersection.synopsis" title="Synopsis">Synopsis</a>
  42. </h4></div></div></div>
  43. <div class="informaltable"><table class="table">
  44. <colgroup>
  45. <col>
  46. <col>
  47. <col>
  48. <col>
  49. <col>
  50. <col>
  51. </colgroup>
  52. <thead><tr>
  53. <th>
  54. <p>
  55. Intersection
  56. </p>
  57. </th>
  58. <th>
  59. <p>
  60. interval<br> type
  61. </p>
  62. </th>
  63. <th>
  64. <p>
  65. interval<br> sets
  66. </p>
  67. </th>
  68. <th>
  69. <p>
  70. interval<br> maps
  71. </p>
  72. </th>
  73. <th>
  74. <p>
  75. element<br> sets
  76. </p>
  77. </th>
  78. <th>
  79. <p>
  80. element<br> maps
  81. </p>
  82. </th>
  83. </tr></thead>
  84. <tbody>
  85. <tr>
  86. <td>
  87. <p>
  88. <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">add_intersection</span><span class="special">(</span><span class="identifier">T</span><span class="special">&amp;,</span> <span class="keyword">const</span>
  89. <span class="identifier">T</span><span class="special">&amp;,</span>
  90. <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span></code>
  91. </p>
  92. </td>
  93. <td>
  94. </td>
  95. <td>
  96. <p>
  97. <a class="link" href="../interface/function_synopsis.html#element_type"><span class="bold"><strong>e</strong></span></a>
  98. <a class="link" href="../interface/function_synopsis.html#interval_type"><span class="bold"><strong>i</strong></span></a>
  99. <a class="link" href="../interface/function_synopsis.html#interval_set_types"><span class="bold"><strong>S</strong></span></a>
  100. </p>
  101. </td>
  102. <td>
  103. <p>
  104. <a class="link" href="../interface/function_synopsis.html#element_type"><span class="bold"><strong>e</strong></span></a>
  105. <a class="link" href="../interface/function_synopsis.html#interval_type"><span class="bold"><strong>i</strong></span></a>
  106. <a class="link" href="../interface/function_synopsis.html#interval_set_types"><span class="bold"><strong>S</strong></span></a>
  107. <a class="link" href="../interface/function_synopsis.html#element_mapping_type"><span class="bold"><strong>b</strong></span></a>
  108. <a class="link" href="../interface/function_synopsis.html#interval_mapping_type"><span class="bold"><strong>p</strong></span></a>
  109. <a class="link" href="../interface/function_synopsis.html#interval_map_types"><span class="bold"><strong>M</strong></span></a>
  110. </p>
  111. </td>
  112. <td>
  113. </td>
  114. <td>
  115. </td>
  116. </tr>
  117. <tr>
  118. <td>
  119. <p>
  120. <code class="computeroutput"><span class="identifier">T</span><span class="special">&amp;</span>
  121. <span class="keyword">operator</span> <span class="special">&amp;=(</span><span class="identifier">T</span><span class="special">&amp;,</span>
  122. <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span></code>
  123. </p>
  124. </td>
  125. <td>
  126. </td>
  127. <td>
  128. <p>
  129. <a class="link" href="../interface/function_synopsis.html#element_type"><span class="bold"><strong>e</strong></span></a>
  130. <a class="link" href="../interface/function_synopsis.html#interval_type"><span class="bold"><strong>i</strong></span></a>
  131. <a class="link" href="../interface/function_synopsis.html#interval_set_types"><span class="bold"><strong>S</strong></span></a>
  132. </p>
  133. </td>
  134. <td>
  135. <p>
  136. <a class="link" href="../interface/function_synopsis.html#element_type"><span class="bold"><strong>e</strong></span></a>
  137. <a class="link" href="../interface/function_synopsis.html#interval_type"><span class="bold"><strong>i</strong></span></a>
  138. <a class="link" href="../interface/function_synopsis.html#interval_set_types"><span class="bold"><strong>S</strong></span></a>
  139. <a class="link" href="../interface/function_synopsis.html#element_mapping_type"><span class="bold"><strong>b</strong></span></a>
  140. <a class="link" href="../interface/function_synopsis.html#interval_mapping_type"><span class="bold"><strong>p</strong></span></a>
  141. <a class="link" href="../interface/function_synopsis.html#interval_map_types"><span class="bold"><strong>M</strong></span></a>
  142. </p>
  143. </td>
  144. <td>
  145. <p>
  146. <a class="link" href="../interface/function_synopsis.html#element_type"><span class="bold"><strong>e</strong></span></a>
  147. <a class="link" href="../interface/function_synopsis.html#itl_set_type"><span class="bold"><strong>s</strong></span></a>
  148. </p>
  149. </td>
  150. <td>
  151. <p>
  152. <a class="link" href="../interface/function_synopsis.html#element_mapping_type"><span class="bold"><strong>b</strong></span></a>
  153. <a class="link" href="../interface/function_synopsis.html#itl_map_type"><span class="bold"><strong>m</strong></span></a>
  154. </p>
  155. </td>
  156. </tr>
  157. <tr>
  158. <td>
  159. <p>
  160. <code class="computeroutput"><span class="identifier">T</span> <span class="keyword">operator</span>
  161. <span class="special">&amp;</span> <span class="special">(</span><span class="identifier">T</span><span class="special">,</span>
  162. <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span></code><br> <code class="computeroutput"><span class="identifier">T</span>
  163. <span class="keyword">operator</span> <span class="special">&amp;</span>
  164. <span class="special">(</span><span class="keyword">const</span>
  165. <span class="identifier">P</span><span class="special">&amp;,</span>
  166. <span class="identifier">T</span><span class="special">)</span></code>
  167. </p>
  168. </td>
  169. <td>
  170. <p>
  171. <a class="link" href="../interface/function_synopsis.html#interval_type"><span class="bold"><strong>i</strong></span></a>
  172. </p>
  173. </td>
  174. <td>
  175. <p>
  176. <a class="link" href="../interface/function_synopsis.html#element_type"><span class="bold"><strong>e</strong></span></a>
  177. <a class="link" href="../interface/function_synopsis.html#interval_type"><span class="bold"><strong>i</strong></span></a>
  178. <a class="link" href="../interface/function_synopsis.html#interval_set_types"><span class="bold"><strong>S</strong></span></a>
  179. </p>
  180. </td>
  181. <td>
  182. <p>
  183. <a class="link" href="../interface/function_synopsis.html#element_type"><span class="bold"><strong>e</strong></span></a>
  184. <a class="link" href="../interface/function_synopsis.html#interval_type"><span class="bold"><strong>i</strong></span></a>
  185. <a class="link" href="../interface/function_synopsis.html#interval_set_types"><span class="bold"><strong>S</strong></span></a>
  186. <a class="link" href="../interface/function_synopsis.html#element_mapping_type"><span class="bold"><strong>b</strong></span></a>
  187. <a class="link" href="../interface/function_synopsis.html#interval_mapping_type"><span class="bold"><strong>p</strong></span></a>
  188. <a class="link" href="../interface/function_synopsis.html#interval_map_types"><span class="bold"><strong>M</strong></span></a>
  189. </p>
  190. </td>
  191. <td>
  192. <p>
  193. <a class="link" href="../interface/function_synopsis.html#element_type"><span class="bold"><strong>e</strong></span></a>
  194. <a class="link" href="../interface/function_synopsis.html#itl_set_type"><span class="bold"><strong>s</strong></span></a>
  195. </p>
  196. </td>
  197. <td>
  198. <p>
  199. <a class="link" href="../interface/function_synopsis.html#element_mapping_type"><span class="bold"><strong>b</strong></span></a>
  200. <a class="link" href="../interface/function_synopsis.html#itl_map_type"><span class="bold"><strong>m</strong></span></a>
  201. </p>
  202. </td>
  203. </tr>
  204. <tr>
  205. <td>
  206. <p>
  207. <code class="computeroutput"><span class="keyword">bool</span> <span class="identifier">intersects</span><span class="special">(</span><span class="keyword">const</span>
  208. <span class="identifier">T</span><span class="special">&amp;,</span>
  209. <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span></code><br> <code class="computeroutput"><span class="keyword">bool</span>
  210. <span class="identifier">disjoint</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;,</span> <span class="keyword">const</span>
  211. <span class="identifier">P</span><span class="special">&amp;)</span></code>
  212. </p>
  213. </td>
  214. <td>
  215. <p>
  216. <a class="link" href="../interface/function_synopsis.html#interval_type"><span class="bold"><strong>i</strong></span></a>
  217. </p>
  218. </td>
  219. <td>
  220. <p>
  221. <a class="link" href="../interface/function_synopsis.html#element_type"><span class="bold"><strong>e</strong></span></a>
  222. <a class="link" href="../interface/function_synopsis.html#interval_type"><span class="bold"><strong>i</strong></span></a>
  223. <a class="link" href="../interface/function_synopsis.html#interval_set_types"><span class="bold"><strong>S</strong></span></a>
  224. </p>
  225. </td>
  226. <td>
  227. <p>
  228. <a class="link" href="../interface/function_synopsis.html#element_type"><span class="bold"><strong>e</strong></span></a>
  229. <a class="link" href="../interface/function_synopsis.html#interval_type"><span class="bold"><strong>i</strong></span></a>
  230. <a class="link" href="../interface/function_synopsis.html#interval_set_types"><span class="bold"><strong>S</strong></span></a>
  231. <a class="link" href="../interface/function_synopsis.html#element_mapping_type"><span class="bold"><strong>b</strong></span></a>
  232. <a class="link" href="../interface/function_synopsis.html#interval_mapping_type"><span class="bold"><strong>p</strong></span></a>
  233. <a class="link" href="../interface/function_synopsis.html#interval_map_types"><span class="bold"><strong>M</strong></span></a>
  234. </p>
  235. </td>
  236. <td>
  237. <p>
  238. <a class="link" href="../interface/function_synopsis.html#element_type"><span class="bold"><strong>e</strong></span></a>
  239. <a class="link" href="../interface/function_synopsis.html#itl_set_type"><span class="bold"><strong>s</strong></span></a>
  240. </p>
  241. </td>
  242. <td>
  243. <p>
  244. <a class="link" href="../interface/function_synopsis.html#element_mapping_type"><span class="bold"><strong>b</strong></span></a>
  245. <a class="link" href="../interface/function_synopsis.html#itl_map_type"><span class="bold"><strong>m</strong></span></a>
  246. </p>
  247. </td>
  248. </tr>
  249. </tbody>
  250. </table></div>
  251. <p>
  252. Functions and operators that are related to <span class="emphasis"><em><span class="bold"><strong>intersection</strong></span></em></span>
  253. on <span class="bold"><strong>icl</strong></span> objects are given in the table
  254. above.
  255. </p>
  256. <div class="informaltable"><table class="table">
  257. <colgroup>
  258. <col>
  259. <col>
  260. </colgroup>
  261. <thead><tr>
  262. <th>
  263. </th>
  264. <th>
  265. <p>
  266. Description of Intersection
  267. </p>
  268. </th>
  269. </tr></thead>
  270. <tbody>
  271. <tr>
  272. <td>
  273. <p>
  274. <code class="computeroutput"><span class="identifier">Sets</span></code>
  275. </p>
  276. </td>
  277. <td>
  278. <p>
  279. Intersection on Sets implements <span class="emphasis"><em><span class="bold"><strong>set
  280. intersection</strong></span></em></span>
  281. </p>
  282. </td>
  283. </tr>
  284. <tr>
  285. <td>
  286. <p>
  287. <code class="computeroutput"><span class="identifier">Maps</span></code>
  288. </p>
  289. </td>
  290. <td>
  291. <p>
  292. Intersection on Maps implements a <span class="emphasis"><em><span class="bold"><strong>map
  293. intersection</strong></span></em></span> function similar to <span class="emphasis"><em>set
  294. intersection</em></span>. If, on intersection, an element value
  295. pair <code class="computeroutput"><span class="special">(</span><span class="identifier">k</span><span class="special">,</span><span class="identifier">v</span><span class="special">)</span></code> it's key <code class="computeroutput"><span class="identifier">k</span></code>
  296. is in the map already, the intersection function is propagated
  297. to the associated value, if it exists for the Map's codomain_type.
  298. </p>
  299. <p>
  300. If the codomain_type has no intersection operation, associated
  301. values are combined using addition. For partial map types this
  302. results in an addition on the intersection of the domains of
  303. the intersected sets. For total maps intersection and addition
  304. are identical in this case.
  305. </p>
  306. <p>
  307. See also <a class="link" href="../semantics/quantifiers__maps_of_numbers.html#boost_icl.semantics.quantifiers__maps_of_numbers.intersection_on_quantifiers"><span class="emphasis"><em>intersection
  308. on Maps of numbers</em></span></a>.
  309. </p>
  310. <p>
  311. A Map can be intersected with key types: an element (an interval
  312. for interval_maps) and and a Set. This results in the selection
  313. of a submap, and can be defined as a generalized selection function
  314. on Maps.
  315. </p>
  316. </td>
  317. </tr>
  318. </tbody>
  319. </table></div>
  320. </div>
  321. <div class="section">
  322. <div class="titlepage"><div><div><h4 class="title">
  323. <a name="boost_icl.function_reference.intersection.functions"></a><a class="link" href="intersection.html#boost_icl.function_reference.intersection.functions" title="Functions">Functions</a>
  324. </h4></div></div></div>
  325. <p>
  326. The overloaded function
  327. </p>
  328. <p>
  329. <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">add_intersection</span><span class="special">(</span><span class="identifier">T</span><span class="special">&amp;</span>
  330. <span class="identifier">result</span><span class="special">,</span>
  331. <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;</span> <span class="identifier">x</span><span class="special">)</span></code>
  332. </p>
  333. <p>
  334. allows to accumulate the intersection of <code class="computeroutput"><span class="identifier">y</span></code>
  335. and <code class="computeroutput"><span class="identifier">x</span></code> in the first argument
  336. <code class="computeroutput"><span class="identifier">result</span></code>. <code class="computeroutput"><span class="identifier">Result</span></code>
  337. might already contain data. In this case the intersection of <code class="computeroutput"><span class="identifier">y</span></code> and <code class="computeroutput"><span class="identifier">x</span></code>
  338. is <code class="computeroutput"><span class="identifier">added</span></code> the the contents
  339. of <code class="computeroutput"><span class="identifier">result</span></code>.
  340. </p>
  341. <pre class="programlisting"><span class="identifier">T</span> <span class="identifier">s1</span> <span class="special">=</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">s2</span> <span class="special">=</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">y</span> <span class="special">=</span> <span class="identifier">g</span><span class="special">;</span> <span class="identifier">P</span> <span class="identifier">x</span> <span class="special">=</span> <span class="identifier">h</span><span class="special">;</span> <span class="comment">// The effect of </span>
  342. <span class="identifier">add_intersection</span><span class="special">(</span><span class="identifier">s1</span><span class="special">,</span> <span class="identifier">y</span><span class="special">,</span> <span class="identifier">x</span><span class="special">);</span> <span class="comment">// add_intersection </span>
  343. <span class="identifier">s2</span> <span class="special">+=</span> <span class="special">(</span><span class="identifier">y</span> <span class="special">&amp;</span> <span class="identifier">x</span><span class="special">);</span> <span class="comment">// and &amp; followed by +=</span>
  344. <span class="identifier">assert</span><span class="special">(</span><span class="identifier">s1</span><span class="special">==</span><span class="identifier">s2</span><span class="special">);</span> <span class="comment">// is identical</span>
  345. </pre>
  346. <p>
  347. </p>
  348. <p>
  349. This might be convenient, if intersection is used like a generalized selection
  350. function. Using element or segment types for <code class="computeroutput"><span class="identifier">P</span></code>,
  351. we can select small parts of a container <code class="computeroutput"><span class="identifier">y</span></code>
  352. and accumulate them in <code class="computeroutput"><span class="identifier">section</span></code>.
  353. </p>
  354. <p>
  355. The admissible combinations of types for function <code class="computeroutput"><span class="keyword">void</span>
  356. <span class="identifier">add_intersection</span><span class="special">(</span><span class="identifier">T</span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span></code>
  357. can be summarized in the <span class="emphasis"><em><span class="bold"><strong>overload table</strong></span></em></span>
  358. below. Compared to other overload tables, placements of function arguments
  359. are different: Row headers denote type <code class="computeroutput"><span class="identifier">T</span></code>
  360. of <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
  361. object. Columns headers denote type <code class="computeroutput"><span class="identifier">P</span></code>
  362. of the second function argument. The table cells contain the arguments
  363. <code class="computeroutput"><span class="identifier">T</span></code> of the intersections
  364. <code class="computeroutput"><span class="identifier">result</span></code>, which is the functions
  365. first argument.
  366. </p>
  367. <p>
  368. </p>
  369. <pre class="programlisting"><span class="comment">/* overload table for */</span> <span class="identifier">T</span><span class="special">\</span><span class="identifier">P</span><span class="special">|</span> <span class="identifier">e</span> <span class="identifier">i</span> <span class="identifier">b</span> <span class="identifier">p</span>
  370. <span class="keyword">void</span> <span class="identifier">T</span><span class="special">::</span><span class="identifier">add_intersection</span><span class="special">(</span><span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">result</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span><span class="keyword">const</span> <span class="special">---+--------</span>
  371. <span class="identifier">s</span> <span class="special">|</span> <span class="identifier">s</span>
  372. <span class="identifier">m</span> <span class="special">|</span> <span class="identifier">m</span> <span class="identifier">m</span>
  373. <span class="identifier">S</span> <span class="special">|</span> <span class="identifier">S</span> <span class="identifier">S</span>
  374. <span class="identifier">M</span> <span class="special">|</span> <span class="identifier">M</span> <span class="identifier">M</span> <span class="identifier">M</span> <span class="identifier">M</span>
  375. </pre>
  376. <p>
  377. </p>
  378. <p>
  379. The next table contains complexity characteristics for function <code class="computeroutput"><span class="identifier">add_intersection</span></code>.
  380. </p>
  381. <div class="table">
  382. <a name="boost_icl.function_reference.intersection.functions.t0"></a><p class="title"><b>Table&#160;1.34.&#160;Time Complexity for function add_intersection on icl containers</b></p>
  383. <div class="table-contents"><table class="table" summary="Time Complexity for function add_intersection on icl containers">
  384. <colgroup>
  385. <col>
  386. <col>
  387. <col>
  388. <col>
  389. <col>
  390. </colgroup>
  391. <thead><tr>
  392. <th>
  393. <p>
  394. <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">add_intersection</span><span class="special">(</span><span class="identifier">T</span><span class="special">&amp;,</span> <span class="keyword">const</span>
  395. <span class="identifier">T</span><span class="special">&amp;,</span>
  396. <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span><span class="keyword">const</span></code>
  397. </p>
  398. </th>
  399. <th>
  400. <p>
  401. domain<br> type
  402. </p>
  403. </th>
  404. <th>
  405. <p>
  406. interval<br> type
  407. </p>
  408. </th>
  409. <th>
  410. <p>
  411. domain<br> mapping<br> type
  412. </p>
  413. </th>
  414. <th>
  415. <p>
  416. interval<br> mapping<br> type
  417. </p>
  418. </th>
  419. </tr></thead>
  420. <tbody>
  421. <tr>
  422. <td>
  423. <p>
  424. <a href="http://www.cplusplus.com/reference/stl/set/" target="_top"><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">set</span></code> </a>
  425. </p>
  426. </td>
  427. <td>
  428. <p>
  429. <span class="emphasis"><em>O(log n)</em></span>
  430. </p>
  431. </td>
  432. <td>
  433. </td>
  434. <td>
  435. </td>
  436. <td>
  437. </td>
  438. </tr>
  439. <tr>
  440. <td>
  441. <p>
  442. <code class="computeroutput"><a class="link" href="../../boost/icl/map.html" title="Class template map">icl::map</a></code>
  443. </p>
  444. </td>
  445. <td>
  446. <p>
  447. <span class="emphasis"><em>O(log n)</em></span>
  448. </p>
  449. </td>
  450. <td>
  451. </td>
  452. <td>
  453. <p>
  454. <span class="emphasis"><em>O(log n)</em></span>
  455. </p>
  456. </td>
  457. <td>
  458. </td>
  459. </tr>
  460. <tr>
  461. <td>
  462. <p>
  463. <code class="computeroutput"><a class="link" href="../../boost/icl/interval_set.html" title="Class template interval_set">interval_sets</a></code>
  464. </p>
  465. </td>
  466. <td>
  467. <p>
  468. <span class="emphasis"><em>O(log n)</em></span>
  469. </p>
  470. </td>
  471. <td>
  472. <p>
  473. <span class="emphasis"><em>O(n)</em></span>
  474. </p>
  475. </td>
  476. <td>
  477. </td>
  478. <td>
  479. </td>
  480. </tr>
  481. <tr>
  482. <td>
  483. <p>
  484. <code class="computeroutput"><a class="link" href="../../boost/icl/interval_map.html" title="Class template interval_map">interval_maps</a></code>
  485. </p>
  486. </td>
  487. <td>
  488. <p>
  489. <span class="emphasis"><em>O(log n)</em></span>
  490. </p>
  491. </td>
  492. <td>
  493. <p>
  494. <span class="emphasis"><em>O(n)</em></span>
  495. </p>
  496. </td>
  497. <td>
  498. <p>
  499. <span class="emphasis"><em>O(n)</em></span>
  500. </p>
  501. </td>
  502. <td>
  503. <p>
  504. <span class="emphasis"><em>O(n)</em></span>
  505. </p>
  506. </td>
  507. </tr>
  508. </tbody>
  509. </table></div>
  510. </div>
  511. <br class="table-break">
  512. </div>
  513. <div class="section">
  514. <div class="titlepage"><div><div><h4 class="title">
  515. <a name="boost_icl.function_reference.intersection.inplace_operators"></a><a class="link" href="intersection.html#boost_icl.function_reference.intersection.inplace_operators" title="Inplace operators">Inplace
  516. operators</a>
  517. </h4></div></div></div>
  518. <p>
  519. The overload tables below are giving admissible type combinations for the
  520. intersection <code class="computeroutput"><span class="keyword">operator</span> <span class="special">&amp;=</span></code>.
  521. As for the overload patterns of <span class="emphasis"><em>subtraction</em></span> intersections
  522. are possible within Sets and Maps but also for Maps combined with <span class="emphasis"><em>key
  523. objects</em></span> which are <span class="emphasis"><em>key elements, intervals</em></span>
  524. and <span class="emphasis"><em>Sets of keys</em></span>.
  525. </p>
  526. <p>
  527. </p>
  528. <pre class="programlisting"><span class="comment">// overload tables for element containers: interval containers:</span>
  529. <span class="identifier">T</span><span class="special">&amp;</span> <span class="keyword">operator</span> <span class="special">&amp;=</span> <span class="special">(</span><span class="identifier">T</span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span> <span class="special">&amp;=</span> <span class="special">|</span> <span class="identifier">e</span> <span class="identifier">b</span> <span class="identifier">s</span> <span class="identifier">m</span> <span class="special">&amp;=</span> <span class="special">|</span> <span class="identifier">e</span> <span class="identifier">i</span> <span class="identifier">b</span> <span class="identifier">p</span> <span class="identifier">S</span> <span class="identifier">M</span>
  530. <span class="special">---+--------</span> <span class="special">---+------------</span>
  531. <span class="identifier">s</span> <span class="special">|</span> <span class="identifier">s</span> <span class="identifier">s</span> <span class="identifier">S</span> <span class="special">|</span> <span class="identifier">S</span> <span class="identifier">S</span> <span class="identifier">S</span>
  532. <span class="identifier">m</span> <span class="special">|</span> <span class="identifier">m</span> <span class="identifier">m</span> <span class="identifier">m</span> <span class="identifier">m</span> <span class="identifier">M</span> <span class="special">|</span> <span class="identifier">M</span> <span class="identifier">M</span> <span class="identifier">M</span> <span class="identifier">M</span> <span class="identifier">M</span> <span class="identifier">M</span>
  533. </pre>
  534. <p>
  535. </p>
  536. <p>
  537. While intersection on maps can be viewed as a <span class="emphasis"><em><span class="bold"><strong>generalisation
  538. of set intersection</strong></span></em></span>. The combination on Maps and
  539. Sets can be interpreted as a <span class="emphasis"><em><span class="bold"><strong>generalized
  540. selection function</strong></span></em></span>, because it allows to select parts
  541. of a maps using <span class="emphasis"><em>key</em></span> or <span class="emphasis"><em>selection objects</em></span>.
  542. So we have a <span class="emphasis"><em><span class="bold"><strong>generalized intersection</strong></span></em></span>
  543. for these overloads,
  544. </p>
  545. <p>
  546. </p>
  547. <pre class="programlisting"><span class="comment">/* (Generalized) intersection */</span> <span class="special">&amp;=</span> <span class="special">|</span> <span class="identifier">e</span> <span class="identifier">b</span> <span class="identifier">s</span> <span class="identifier">m</span> <span class="special">&amp;=</span> <span class="special">|</span> <span class="identifier">e</span> <span class="identifier">i</span> <span class="identifier">b</span> <span class="identifier">p</span> <span class="identifier">S</span> <span class="identifier">M</span>
  548. <span class="special">---+--------</span> <span class="special">---+------------</span>
  549. <span class="identifier">s</span> <span class="special">|</span> <span class="identifier">s</span> <span class="identifier">s</span> <span class="identifier">S</span> <span class="special">|</span> <span class="identifier">S</span> <span class="identifier">S</span> <span class="identifier">S</span>
  550. <span class="identifier">m</span> <span class="special">|</span> <span class="identifier">m</span> <span class="identifier">m</span> <span class="identifier">M</span> <span class="special">|</span> <span class="identifier">M</span> <span class="identifier">M</span> <span class="identifier">M</span>
  551. </pre>
  552. <p>
  553. </p>
  554. <p>
  555. <span class="bold"><strong>and</strong></span> a <span class="emphasis"><em><span class="bold"><strong>selection
  556. by key objects</strong></span></em></span> here:
  557. </p>
  558. <p>
  559. </p>
  560. <pre class="programlisting"><span class="comment">/* Selection by key objects */</span> <span class="special">&amp;=</span> <span class="special">|</span> <span class="identifier">e</span> <span class="identifier">b</span> <span class="identifier">s</span> <span class="identifier">m</span> <span class="special">&amp;=</span> <span class="special">|</span> <span class="identifier">e</span> <span class="identifier">i</span> <span class="identifier">b</span> <span class="identifier">p</span> <span class="identifier">S</span> <span class="identifier">M</span>
  561. <span class="special">---+--------</span> <span class="special">---+------------</span>
  562. <span class="identifier">s</span> <span class="special">|</span> <span class="identifier">s</span> <span class="identifier">s</span> <span class="identifier">S</span> <span class="special">|</span> <span class="identifier">S</span> <span class="identifier">S</span> <span class="identifier">S</span>
  563. <span class="identifier">m</span> <span class="special">|</span> <span class="identifier">m</span> <span class="identifier">m</span> <span class="identifier">M</span> <span class="special">|</span> <span class="identifier">M</span> <span class="identifier">M</span> <span class="identifier">M</span>
  564. </pre>
  565. <p>
  566. </p>
  567. <p>
  568. The differences for the different functionalities of <code class="computeroutput"><span class="keyword">operator</span>
  569. <span class="special">&amp;=</span></code> are on the Map-row of the
  570. tables. Both functionalities fall together for Sets in the function <span class="emphasis"><em><span class="bold"><strong>set intersection</strong></span></em></span>.
  571. </p>
  572. <p>
  573. Complexity characteristics for inplace intersection operations are given
  574. by the next tables where
  575. </p>
  576. <pre class="programlisting"><span class="identifier">n</span> <span class="special">=</span> <span class="identifier">iterative_size</span><span class="special">(</span><span class="identifier">y</span><span class="special">);</span>
  577. <span class="identifier">m</span> <span class="special">=</span> <span class="identifier">iterative_size</span><span class="special">(</span><span class="identifier">x</span><span class="special">);</span> <span class="comment">//if P is a container type</span>
  578. </pre>
  579. <p>
  580. </p>
  581. <div class="table">
  582. <a name="boost_icl.function_reference.intersection.inplace_operators.t0"></a><p class="title"><b>Table&#160;1.35.&#160;Time Complexity for inplace intersection on element containers</b></p>
  583. <div class="table-contents"><table class="table" summary="Time Complexity for inplace intersection on element containers">
  584. <colgroup>
  585. <col>
  586. <col>
  587. <col>
  588. <col>
  589. <col>
  590. </colgroup>
  591. <thead><tr>
  592. <th>
  593. <p>
  594. <code class="computeroutput"><span class="identifier">T</span><span class="special">&amp;</span>
  595. <span class="keyword">operator</span> <span class="special">&amp;=</span>
  596. <span class="special">(</span><span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">const</span>
  597. <span class="identifier">P</span><span class="special">&amp;</span>
  598. <span class="identifier">x</span><span class="special">)</span></code>
  599. </p>
  600. </th>
  601. <th>
  602. <p>
  603. domain<br> type
  604. </p>
  605. </th>
  606. <th>
  607. <p>
  608. domain<br> mapping<br> type
  609. </p>
  610. </th>
  611. <th>
  612. <p>
  613. std::set
  614. </p>
  615. </th>
  616. <th>
  617. <p>
  618. icl::map
  619. </p>
  620. </th>
  621. </tr></thead>
  622. <tbody>
  623. <tr>
  624. <td>
  625. <p>
  626. <a href="http://www.cplusplus.com/reference/stl/set/" target="_top"><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">set</span></code> </a>
  627. </p>
  628. </td>
  629. <td>
  630. <p>
  631. <span class="emphasis"><em>O(log n)</em></span>
  632. </p>
  633. </td>
  634. <td>
  635. </td>
  636. <td>
  637. <p>
  638. <span class="emphasis"><em>O(m log n)</em></span>
  639. </p>
  640. </td>
  641. <td>
  642. </td>
  643. </tr>
  644. <tr>
  645. <td>
  646. <p>
  647. <code class="computeroutput"><a class="link" href="../../boost/icl/map.html" title="Class template map">icl::map</a></code>
  648. </p>
  649. </td>
  650. <td>
  651. <p>
  652. <span class="emphasis"><em>O(log n)</em></span>
  653. </p>
  654. </td>
  655. <td>
  656. <p>
  657. <span class="emphasis"><em>O(log n)</em></span>
  658. </p>
  659. </td>
  660. <td>
  661. <p>
  662. <span class="emphasis"><em>O(m log n)</em></span>
  663. </p>
  664. </td>
  665. <td>
  666. <p>
  667. <span class="emphasis"><em>O(m log n)</em></span>
  668. </p>
  669. </td>
  670. </tr>
  671. </tbody>
  672. </table></div>
  673. </div>
  674. <br class="table-break"><div class="table">
  675. <a name="boost_icl.function_reference.intersection.inplace_operators.t1"></a><p class="title"><b>Table&#160;1.36.&#160;Time Complexity for inplace intersection on interval containers</b></p>
  676. <div class="table-contents"><table class="table" summary="Time Complexity for inplace intersection on interval containers">
  677. <colgroup>
  678. <col>
  679. <col>
  680. <col>
  681. <col>
  682. <col>
  683. <col>
  684. <col>
  685. </colgroup>
  686. <thead><tr>
  687. <th>
  688. <p>
  689. <code class="computeroutput"><span class="identifier">T</span><span class="special">&amp;</span>
  690. <span class="keyword">operator</span> <span class="special">&amp;=</span>
  691. <span class="special">(</span><span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">const</span>
  692. <span class="identifier">P</span><span class="special">&amp;</span>
  693. <span class="identifier">x</span><span class="special">)</span></code>
  694. </p>
  695. </th>
  696. <th>
  697. <p>
  698. domain<br> type
  699. </p>
  700. </th>
  701. <th>
  702. <p>
  703. interval<br> type
  704. </p>
  705. </th>
  706. <th>
  707. <p>
  708. domain<br> mapping<br> type
  709. </p>
  710. </th>
  711. <th>
  712. <p>
  713. interval<br> mapping<br> type
  714. </p>
  715. </th>
  716. <th>
  717. <p>
  718. interval<br> sets
  719. </p>
  720. </th>
  721. <th>
  722. <p>
  723. interval<br> maps
  724. </p>
  725. </th>
  726. </tr></thead>
  727. <tbody>
  728. <tr>
  729. <td>
  730. <p>
  731. interval_sets
  732. </p>
  733. </td>
  734. <td>
  735. <p>
  736. <span class="emphasis"><em>O(log n)</em></span>
  737. </p>
  738. </td>
  739. <td>
  740. <p>
  741. <span class="emphasis"><em>O(n)</em></span>
  742. </p>
  743. </td>
  744. <td>
  745. </td>
  746. <td>
  747. </td>
  748. <td>
  749. <p>
  750. <span class="emphasis"><em>O(m log(n+m))</em></span>
  751. </p>
  752. </td>
  753. <td>
  754. </td>
  755. </tr>
  756. <tr>
  757. <td>
  758. <p>
  759. interval_maps
  760. </p>
  761. </td>
  762. <td>
  763. <p>
  764. <span class="emphasis"><em>O(log n)</em></span>
  765. </p>
  766. </td>
  767. <td>
  768. <p>
  769. <span class="emphasis"><em>O(n)</em></span>
  770. </p>
  771. </td>
  772. <td>
  773. <p>
  774. <span class="emphasis"><em>O(log n)</em></span>
  775. </p>
  776. </td>
  777. <td>
  778. <p>
  779. <span class="emphasis"><em>O(n)</em></span>
  780. </p>
  781. </td>
  782. <td>
  783. <p>
  784. <span class="emphasis"><em>O(m log(n+m))</em></span>
  785. </p>
  786. </td>
  787. <td>
  788. <p>
  789. <span class="emphasis"><em>O(m log(n+m))</em></span>
  790. </p>
  791. </td>
  792. </tr>
  793. </tbody>
  794. </table></div>
  795. </div>
  796. <br class="table-break">
  797. </div>
  798. <div class="section">
  799. <div class="titlepage"><div><div><h4 class="title">
  800. <a name="boost_icl.function_reference.intersection.infix_operators"></a><a class="link" href="intersection.html#boost_icl.function_reference.intersection.infix_operators" title="Infix operators">Infix
  801. operators</a>
  802. </h4></div></div></div>
  803. <p>
  804. For the <span class="bold"><strong>icl's</strong></span> infix intersection the following
  805. overloads are available:
  806. </p>
  807. <p>
  808. </p>
  809. <pre class="programlisting"><span class="comment">// overload tables for element containers: interval containers:</span>
  810. <span class="identifier">T</span> <span class="keyword">operator</span> <span class="special">&amp;</span> <span class="special">(</span><span class="identifier">T</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span> <span class="special">&amp;</span> <span class="special">|</span> <span class="identifier">e</span> <span class="identifier">b</span> <span class="identifier">s</span> <span class="identifier">m</span> <span class="special">&amp;</span> <span class="special">|</span> <span class="identifier">e</span> <span class="identifier">i</span> <span class="identifier">b</span> <span class="identifier">p</span> <span class="identifier">S1</span> <span class="identifier">S2</span> <span class="identifier">S3</span> <span class="identifier">M1</span> <span class="identifier">M3</span>
  811. <span class="identifier">T</span> <span class="keyword">operator</span> <span class="special">&amp;</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;,</span> <span class="identifier">T</span><span class="special">)</span> <span class="special">---+--------</span> <span class="special">---+---------------------------</span>
  812. <span class="identifier">e</span> <span class="special">|</span> <span class="identifier">s</span> <span class="identifier">m</span> <span class="identifier">e</span> <span class="special">|</span> <span class="identifier">S1</span> <span class="identifier">S2</span> <span class="identifier">S3</span> <span class="identifier">M1</span> <span class="identifier">M3</span>
  813. <span class="identifier">b</span> <span class="special">|</span> <span class="identifier">m</span> <span class="identifier">i</span> <span class="special">|</span> <span class="identifier">i</span> <span class="identifier">S1</span> <span class="identifier">S2</span> <span class="identifier">S3</span> <span class="identifier">M1</span> <span class="identifier">M3</span>
  814. <span class="identifier">s</span> <span class="special">|</span> <span class="identifier">s</span> <span class="identifier">s</span> <span class="identifier">m</span> <span class="identifier">b</span> <span class="special">|</span> <span class="identifier">M1</span> <span class="identifier">M3</span>
  815. <span class="identifier">m</span> <span class="special">|</span> <span class="identifier">m</span> <span class="identifier">m</span> <span class="identifier">m</span> <span class="identifier">m</span> <span class="identifier">p</span> <span class="special">|</span> <span class="identifier">M1</span> <span class="identifier">M3</span>
  816. <span class="identifier">S1</span> <span class="special">|</span> <span class="identifier">S1</span> <span class="identifier">S1</span> <span class="identifier">S1</span> <span class="identifier">S2</span> <span class="identifier">S3</span> <span class="identifier">M1</span> <span class="identifier">M3</span>
  817. <span class="identifier">S2</span> <span class="special">|</span> <span class="identifier">S2</span> <span class="identifier">S2</span> <span class="identifier">S2</span> <span class="identifier">S2</span> <span class="identifier">S3</span> <span class="identifier">M1</span> <span class="identifier">M3</span>
  818. <span class="identifier">S3</span> <span class="special">|</span> <span class="identifier">S3</span> <span class="identifier">S3</span> <span class="identifier">S3</span> <span class="identifier">S3</span> <span class="identifier">S3</span> <span class="identifier">M1</span> <span class="identifier">M3</span>
  819. <span class="identifier">M1</span> <span class="special">|</span> <span class="identifier">M1</span> <span class="identifier">M1</span> <span class="identifier">M1</span> <span class="identifier">M1</span> <span class="identifier">M1</span> <span class="identifier">M1</span> <span class="identifier">M1</span> <span class="identifier">M1</span> <span class="identifier">M3</span>
  820. <span class="identifier">M3</span> <span class="special">|</span> <span class="identifier">M3</span> <span class="identifier">M3</span> <span class="identifier">M3</span> <span class="identifier">M3</span> <span class="identifier">M3</span> <span class="identifier">M3</span> <span class="identifier">M3</span> <span class="identifier">M3</span> <span class="identifier">M3</span>
  821. </pre>
  822. <p>
  823. </p>
  824. <p>
  825. To resolve ambiguities among interval containers the <span class="emphasis"><em><span class="bold"><strong>finer</strong></span></em></span> container type is chosen as result
  826. type.
  827. </p>
  828. <p>
  829. Again, we can split up the overload tables of <code class="computeroutput"><span class="keyword">operator</span>
  830. <span class="special">&amp;</span></code> in a part describing the
  831. <span class="emphasis"><em>*generalized intersection</em></span> on interval containers and
  832. a second part defining the <span class="emphasis"><em>*selection by key object</em></span>
  833. functionality.
  834. </p>
  835. <p>
  836. </p>
  837. <pre class="programlisting"><span class="comment">/* (Generalized) intersection */</span> <span class="special">&amp;</span> <span class="special">|</span> <span class="identifier">e</span> <span class="identifier">b</span> <span class="identifier">s</span> <span class="identifier">m</span> <span class="special">&amp;</span> <span class="special">|</span> <span class="identifier">e</span> <span class="identifier">i</span> <span class="identifier">b</span> <span class="identifier">p</span> <span class="identifier">S1</span> <span class="identifier">S2</span> <span class="identifier">S3</span> <span class="identifier">M1</span> <span class="identifier">M3</span>
  838. <span class="special">---+--------</span> <span class="special">---+---------------------------</span>
  839. <span class="identifier">e</span> <span class="special">|</span> <span class="identifier">s</span> <span class="identifier">e</span> <span class="special">|</span> <span class="identifier">S1</span> <span class="identifier">S2</span> <span class="identifier">S3</span>
  840. <span class="identifier">b</span> <span class="special">|</span> <span class="identifier">m</span> <span class="identifier">i</span> <span class="special">|</span> <span class="identifier">i</span> <span class="identifier">S1</span> <span class="identifier">S2</span> <span class="identifier">S3</span>
  841. <span class="identifier">s</span> <span class="special">|</span> <span class="identifier">s</span> <span class="identifier">s</span> <span class="identifier">b</span> <span class="special">|</span> <span class="identifier">M1</span> <span class="identifier">M3</span>
  842. <span class="identifier">m</span> <span class="special">|</span> <span class="identifier">m</span> <span class="identifier">m</span> <span class="identifier">p</span> <span class="special">|</span> <span class="identifier">M1</span> <span class="identifier">M3</span>
  843. <span class="identifier">S1</span> <span class="special">|</span> <span class="identifier">S1</span> <span class="identifier">S1</span> <span class="identifier">S1</span> <span class="identifier">S2</span> <span class="identifier">S3</span>
  844. <span class="identifier">S2</span> <span class="special">|</span> <span class="identifier">S2</span> <span class="identifier">S2</span> <span class="identifier">S2</span> <span class="identifier">S2</span> <span class="identifier">S3</span>
  845. <span class="identifier">S3</span> <span class="special">|</span> <span class="identifier">S3</span> <span class="identifier">S3</span> <span class="identifier">S3</span> <span class="identifier">S3</span> <span class="identifier">S3</span>
  846. <span class="identifier">M1</span> <span class="special">|</span> <span class="identifier">M1</span> <span class="identifier">M1</span> <span class="identifier">M1</span> <span class="identifier">M3</span>
  847. <span class="identifier">M3</span> <span class="special">|</span> <span class="identifier">M3</span> <span class="identifier">M3</span> <span class="identifier">M3</span> <span class="identifier">M3</span>
  848. </pre>
  849. <p>
  850. </p>
  851. <p>
  852. </p>
  853. <pre class="programlisting"><span class="comment">/* Selection by key objects */</span> <span class="special">&amp;</span> <span class="special">|</span> <span class="identifier">e</span> <span class="identifier">b</span> <span class="identifier">s</span> <span class="identifier">m</span> <span class="special">&amp;</span> <span class="special">|</span> <span class="identifier">e</span> <span class="identifier">i</span> <span class="identifier">b</span> <span class="identifier">p</span> <span class="identifier">S1</span> <span class="identifier">S2</span> <span class="identifier">S3</span> <span class="identifier">M1</span> <span class="identifier">M3</span>
  854. <span class="special">---+--------</span> <span class="special">---+---------------------------</span>
  855. <span class="identifier">e</span> <span class="special">|</span> <span class="identifier">s</span> <span class="identifier">m</span> <span class="identifier">e</span> <span class="special">|</span> <span class="identifier">S1</span> <span class="identifier">S2</span> <span class="identifier">S3</span> <span class="identifier">M1</span> <span class="identifier">M3</span>
  856. <span class="identifier">b</span> <span class="special">|</span> <span class="identifier">i</span> <span class="special">|</span> <span class="identifier">i</span> <span class="identifier">S1</span> <span class="identifier">S2</span> <span class="identifier">S3</span> <span class="identifier">M1</span> <span class="identifier">M3</span>
  857. <span class="identifier">s</span> <span class="special">|</span> <span class="identifier">s</span> <span class="identifier">s</span> <span class="identifier">m</span> <span class="identifier">b</span> <span class="special">|</span>
  858. <span class="identifier">m</span> <span class="special">|</span> <span class="identifier">m</span> <span class="identifier">m</span> <span class="identifier">p</span> <span class="special">|</span>
  859. <span class="identifier">S1</span> <span class="special">|</span> <span class="identifier">S1</span> <span class="identifier">S1</span> <span class="identifier">S1</span> <span class="identifier">S2</span> <span class="identifier">S3</span> <span class="identifier">M1</span> <span class="identifier">M3</span>
  860. <span class="identifier">S2</span> <span class="special">|</span> <span class="identifier">S2</span> <span class="identifier">S2</span> <span class="identifier">S2</span> <span class="identifier">S2</span> <span class="identifier">S3</span> <span class="identifier">M1</span> <span class="identifier">M3</span>
  861. <span class="identifier">S3</span> <span class="special">|</span> <span class="identifier">S3</span> <span class="identifier">S3</span> <span class="identifier">S3</span> <span class="identifier">S3</span> <span class="identifier">S3</span> <span class="identifier">M1</span> <span class="identifier">M3</span>
  862. <span class="identifier">M1</span> <span class="special">|</span> <span class="identifier">M1</span> <span class="identifier">M1</span> <span class="identifier">M1</span> <span class="identifier">M1</span> <span class="identifier">M1</span>
  863. <span class="identifier">M3</span> <span class="special">|</span> <span class="identifier">M3</span> <span class="identifier">M3</span> <span class="identifier">M3</span> <span class="identifier">M3</span> <span class="identifier">M3</span>
  864. </pre>
  865. <p>
  866. </p>
  867. </div>
  868. <div class="section">
  869. <div class="titlepage"><div><div><h4 class="title">
  870. <a name="boost_icl.function_reference.intersection.intersection_tester"></a><a class="link" href="intersection.html#boost_icl.function_reference.intersection.intersection_tester" title="Intersection tester">Intersection
  871. tester</a>
  872. </h4></div></div></div>
  873. <div class="informaltable"><table class="table">
  874. <colgroup>
  875. <col>
  876. <col>
  877. </colgroup>
  878. <thead><tr>
  879. <th>
  880. <p>
  881. Tester
  882. </p>
  883. </th>
  884. <th>
  885. <p>
  886. Desctription
  887. </p>
  888. </th>
  889. </tr></thead>
  890. <tbody>
  891. <tr>
  892. <td>
  893. <p>
  894. <code class="computeroutput"><span class="keyword">bool</span> <span class="identifier">intersects</span><span class="special">(</span><span class="keyword">const</span>
  895. <span class="identifier">T</span><span class="special">&amp;</span>
  896. <span class="identifier">left</span><span class="special">,</span>
  897. <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;</span> <span class="identifier">right</span><span class="special">)</span></code>
  898. </p>
  899. </td>
  900. <td>
  901. <p>
  902. Tests, if <code class="computeroutput"><span class="identifier">left</span></code>
  903. and <code class="computeroutput"><span class="identifier">right</span></code> intersect.
  904. </p>
  905. </td>
  906. </tr>
  907. <tr>
  908. <td>
  909. <p>
  910. <code class="computeroutput"><span class="keyword">bool</span> <span class="identifier">disjoint</span><span class="special">(</span><span class="keyword">const</span>
  911. <span class="identifier">T</span><span class="special">&amp;</span>
  912. <span class="identifier">left</span><span class="special">,</span>
  913. <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;</span> <span class="identifier">right</span><span class="special">)</span></code>
  914. </p>
  915. </td>
  916. <td>
  917. <p>
  918. Tests, if <code class="computeroutput"><span class="identifier">left</span></code>
  919. and <code class="computeroutput"><span class="identifier">right</span></code> are
  920. disjoint.
  921. </p>
  922. </td>
  923. </tr>
  924. <tr>
  925. <td>
  926. </td>
  927. <td>
  928. <p>
  929. <code class="computeroutput"><span class="identifier">intersects</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span><span class="identifier">y</span><span class="special">)</span>
  930. <span class="special">==</span> <span class="special">!</span><span class="identifier">disjoint</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span><span class="identifier">y</span><span class="special">)</span></code>
  931. </p>
  932. </td>
  933. </tr>
  934. </tbody>
  935. </table></div>
  936. <p>
  937. </p>
  938. <pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">intersects</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span> <span class="identifier">T</span><span class="special">\</span><span class="identifier">P</span><span class="special">|</span> <span class="identifier">e</span> <span class="identifier">b</span> <span class="identifier">s</span> <span class="identifier">m</span> <span class="identifier">T</span><span class="special">\</span><span class="identifier">P</span><span class="special">|</span> <span class="identifier">e</span> <span class="identifier">i</span> <span class="identifier">b</span> <span class="identifier">p</span> <span class="identifier">S</span> <span class="identifier">M</span>
  939. <span class="keyword">bool</span> <span class="identifier">disjoint</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span> <span class="special">---+--------</span> <span class="special">---+------------</span>
  940. <span class="identifier">s</span> <span class="special">|</span> <span class="number">1</span> <span class="number">1</span> <span class="identifier">S</span> <span class="special">|</span> <span class="number">1</span> <span class="number">1</span> <span class="number">1</span>
  941. <span class="identifier">m</span> <span class="special">|</span> <span class="number">1</span> <span class="number">1</span> <span class="number">1</span> <span class="number">1</span> <span class="identifier">M</span> <span class="special">|</span> <span class="number">1</span> <span class="number">1</span> <span class="number">1</span> <span class="number">1</span> <span class="number">1</span> <span class="number">1</span>
  942. </pre>
  943. <p>
  944. </p>
  945. </div>
  946. <p>
  947. <span class="emphasis"><em><span class="bold"><strong>See also . . .</strong></span></em></span>
  948. </p>
  949. <div class="informaltable"><table class="table">
  950. <colgroup><col></colgroup>
  951. <thead><tr></tr></thead>
  952. <tbody>
  953. <tr><td>
  954. <p>
  955. <a class="link" href="symmetric_difference.html" title="Symmetric Difference"><span class="emphasis"><em><span class="bold"><strong>Symmetric difference</strong></span></em></span></a>
  956. </p>
  957. </td></tr>
  958. <tr><td>
  959. <p>
  960. <a class="link" href="subtraction.html" title="Subtraction"><span class="emphasis"><em><span class="bold"><strong>Subtraction</strong></span></em></span></a>
  961. </p>
  962. </td></tr>
  963. <tr><td>
  964. <p>
  965. <a class="link" href="addition.html" title="Addition"><span class="emphasis"><em><span class="bold"><strong>Addition</strong></span></em></span></a>
  966. </p>
  967. </td></tr>
  968. </tbody>
  969. </table></div>
  970. <p>
  971. <span class="emphasis"><em><span class="bold"><strong>Back to section . . .</strong></span></em></span>
  972. </p>
  973. <div class="informaltable"><table class="table">
  974. <colgroup><col></colgroup>
  975. <thead><tr></tr></thead>
  976. <tbody>
  977. <tr><td>
  978. <p>
  979. <a class="link" href="../interface/function_synopsis.html#function_synopsis_table"><span class="emphasis"><em><span class="bold"><strong>Function
  980. Synopsis</strong></span></em></span></a>
  981. </p>
  982. </td></tr>
  983. <tr><td>
  984. <p>
  985. <a class="link" href="../interface.html" title="Interface"><span class="emphasis"><em><span class="bold"><strong>Interface</strong></span></em></span></a>
  986. </p>
  987. </td></tr>
  988. </tbody>
  989. </table></div>
  990. </div>
  991. <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
  992. <td align="left"></td>
  993. <td align="right"><div class="copyright-footer">Copyright &#169; 2007-2010 Joachim
  994. Faulhaber<br>Copyright &#169; 1999-2006 Cortex Software
  995. GmbH<p>
  996. Distributed under the Boost Software License, Version 1.0. (See accompanying
  997. 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>)
  998. </p>
  999. </div></td>
  1000. </tr></table>
  1001. <hr>
  1002. <div class="spirit-nav">
  1003. <a accesskey="p" href="erasure.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../function_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="symmetric_difference.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
  1004. </div>
  1005. </body>
  1006. </html>