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