1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4<title>Symmetric Difference</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 1. Boost.Icl"> 8<link rel="up" href="../function_reference.html" title="Function Reference"> 9<link rel="prev" href="intersection.html" title="Intersection"> 10<link rel="next" href="iterator_related.html" title="Iterator related"> 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="intersection.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="iterator_related.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.symmetric_difference"></a><a class="link" href="symmetric_difference.html" title="Symmetric Difference">Symmetric 28 Difference</a> 29</h3></div></div></div> 30<div class="toc"><dl class="toc"> 31<dt><span class="section"><a href="symmetric_difference.html#boost_icl.function_reference.symmetric_difference.synopsis">Synopsis</a></span></dt> 32<dt><span class="section"><a href="symmetric_difference.html#boost_icl.function_reference.symmetric_difference.functions">Functions</a></span></dt> 33<dt><span class="section"><a href="symmetric_difference.html#boost_icl.function_reference.symmetric_difference.inplace_operators">Inplace 34 operators</a></span></dt> 35<dt><span class="section"><a href="symmetric_difference.html#boost_icl.function_reference.symmetric_difference.infix_operators">Infix 36 operators</a></span></dt> 37</dl></div> 38<div class="section"> 39<div class="titlepage"><div><div><h4 class="title"> 40<a name="boost_icl.function_reference.symmetric_difference.synopsis"></a><a class="link" href="symmetric_difference.html#boost_icl.function_reference.symmetric_difference.synopsis" title="Synopsis">Synopsis</a> 41</h4></div></div></div> 42<div class="informaltable"><table class="table"> 43<colgroup> 44<col> 45<col> 46<col> 47<col> 48<col> 49</colgroup> 50<thead><tr> 51<th> 52 <p> 53 Symmetric difference 54 </p> 55 </th> 56<th> 57 <p> 58 interval<br> sets 59 </p> 60 </th> 61<th> 62 <p> 63 interval<br> maps 64 </p> 65 </th> 66<th> 67 <p> 68 element<br> sets 69 </p> 70 </th> 71<th> 72 <p> 73 element<br> maps 74 </p> 75 </th> 76</tr></thead> 77<tbody> 78<tr> 79<td> 80 <p> 81 <code class="computeroutput"><span class="identifier">T</span><span class="special">&</span> 82 <span class="identifier">T</span><span class="special">::</span><span class="identifier">flip</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&)</span></code> 83 </p> 84 </td> 85<td> 86 <p> 87 <a class="link" href="../interface/function_synopsis.html#element_type"><span class="bold"><strong>e</strong></span></a> 88 <a class="link" href="../interface/function_synopsis.html#interval_type"><span class="bold"><strong>i</strong></span></a> 89 </p> 90 </td> 91<td> 92 <p> 93 <a class="link" href="../interface/function_synopsis.html#element_mapping_type"><span class="bold"><strong>b</strong></span></a> 94 <a class="link" href="../interface/function_synopsis.html#interval_mapping_type"><span class="bold"><strong>p</strong></span></a> 95 </p> 96 </td> 97<td> 98 </td> 99<td> 100 <p> 101 <a class="link" href="../interface/function_synopsis.html#element_mapping_type"><span class="bold"><strong>b</strong></span></a> 102 </p> 103 </td> 104</tr> 105<tr> 106<td> 107 <p> 108 <code class="computeroutput"><span class="identifier">T</span><span class="special">&</span> 109 <span class="identifier">flip</span><span class="special">(</span><span class="identifier">T</span><span class="special">&,</span> 110 <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&)</span></code> 111 </p> 112 </td> 113<td> 114 <p> 115 <a class="link" href="../interface/function_synopsis.html#element_type"><span class="bold"><strong>e</strong></span></a> 116 <a class="link" href="../interface/function_synopsis.html#interval_type"><span class="bold"><strong>i</strong></span></a> 117 </p> 118 </td> 119<td> 120 <p> 121 <a class="link" href="../interface/function_synopsis.html#element_mapping_type"><span class="bold"><strong>b</strong></span></a> 122 <a class="link" href="../interface/function_synopsis.html#interval_mapping_type"><span class="bold"><strong>p</strong></span></a> 123 </p> 124 </td> 125<td> 126 <p> 127 <a class="link" href="../interface/function_synopsis.html#element_type"><span class="bold"><strong>e</strong></span></a> 128 </p> 129 </td> 130<td> 131 <p> 132 <a class="link" href="../interface/function_synopsis.html#element_mapping_type"><span class="bold"><strong>b</strong></span></a> 133 </p> 134 </td> 135</tr> 136<tr> 137<td> 138 <p> 139 <code class="computeroutput"><span class="identifier">T</span><span class="special">&</span> 140 <span class="keyword">operator</span> <span class="special">^=(</span><span class="identifier">T</span><span class="special">&,</span> 141 <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&)</span></code> 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#interval_type"><span class="bold"><strong>i</strong></span></a> 148 <a class="link" href="../interface/function_synopsis.html#interval_set_types"><span class="bold"><strong>S</strong></span></a> 149 </p> 150 </td> 151<td> 152 <p> 153 <a class="link" href="../interface/function_synopsis.html#element_mapping_type"><span class="bold"><strong>b</strong></span></a> 154 <a class="link" href="../interface/function_synopsis.html#interval_mapping_type"><span class="bold"><strong>p</strong></span></a> 155 <a class="link" href="../interface/function_synopsis.html#interval_map_types"><span class="bold"><strong>M</strong></span></a> 156 </p> 157 </td> 158<td> 159 <p> 160 <a class="link" href="../interface/function_synopsis.html#element_type"><span class="bold"><strong>e</strong></span></a> 161 <a class="link" href="../interface/function_synopsis.html#itl_set_type"><span class="bold"><strong>s</strong></span></a> 162 </p> 163 </td> 164<td> 165 <p> 166 <a class="link" href="../interface/function_synopsis.html#element_mapping_type"><span class="bold"><strong>b</strong></span></a> 167 <a class="link" href="../interface/function_synopsis.html#itl_map_type"><span class="bold"><strong>m</strong></span></a> 168 </p> 169 </td> 170</tr> 171<tr> 172<td> 173 <p> 174 <code class="computeroutput"><span class="identifier">T</span> <span class="keyword">operator</span> 175 <span class="special">^</span> <span class="special">(</span><span class="identifier">T</span><span class="special">,</span> 176 <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&)</span></code><br> <code class="computeroutput"><span class="identifier">T</span> 177 <span class="keyword">operator</span> <span class="special">^</span> 178 <span class="special">(</span><span class="keyword">const</span> 179 <span class="identifier">P</span><span class="special">&,</span> 180 <span class="identifier">T</span><span class="special">)</span></code> 181 </p> 182 </td> 183<td> 184 <p> 185 <a class="link" href="../interface/function_synopsis.html#element_type"><span class="bold"><strong>e</strong></span></a> 186 <a class="link" href="../interface/function_synopsis.html#interval_type"><span class="bold"><strong>i</strong></span></a> 187 <a class="link" href="../interface/function_synopsis.html#interval_set_types"><span class="bold"><strong>S</strong></span></a> 188 </p> 189 </td> 190<td> 191 <p> 192 <a class="link" href="../interface/function_synopsis.html#element_mapping_type"><span class="bold"><strong>b</strong></span></a> 193 <a class="link" href="../interface/function_synopsis.html#interval_mapping_type"><span class="bold"><strong>p</strong></span></a> 194 <a class="link" href="../interface/function_synopsis.html#interval_map_types"><span class="bold"><strong>M</strong></span></a> 195 </p> 196 </td> 197<td> 198 <p> 199 <a class="link" href="../interface/function_synopsis.html#element_type"><span class="bold"><strong>e</strong></span></a> 200 <a class="link" href="../interface/function_synopsis.html#itl_set_type"><span class="bold"><strong>s</strong></span></a> 201 </p> 202 </td> 203<td> 204 <p> 205 <a class="link" href="../interface/function_synopsis.html#element_mapping_type"><span class="bold"><strong>b</strong></span></a> 206 <a class="link" href="../interface/function_synopsis.html#itl_map_type"><span class="bold"><strong>m</strong></span></a> 207 </p> 208 </td> 209</tr> 210</tbody> 211</table></div> 212<p> 213 Functions and operators that implement <span class="emphasis"><em><span class="bold"><strong>symmetric 214 difference</strong></span></em></span> on <span class="bold"><strong>icl</strong></span> 215 objects are given in the table above. 216 </p> 217<div class="informaltable"><table class="table"> 218<colgroup> 219<col> 220<col> 221</colgroup> 222<thead><tr> 223<th> 224 </th> 225<th> 226 <p> 227 Description of symmetric difference 228 </p> 229 </th> 230</tr></thead> 231<tbody> 232<tr> 233<td> 234 <p> 235 <code class="computeroutput"><span class="identifier">Sets</span></code> 236 </p> 237 </td> 238<td> 239 <p> 240 <code class="computeroutput"><span class="keyword">operator</span> <span class="special">^</span></code> 241 implements <span class="emphasis"><em><span class="bold"><strong>set symmetric difference</strong></span></em></span> 242 </p> 243 </td> 244</tr> 245<tr> 246<td> 247 <p> 248 <code class="computeroutput"><span class="identifier">Maps</span></code> 249 </p> 250 </td> 251<td> 252 <p> 253 <code class="computeroutput"><span class="keyword">operator</span> <span class="special">^</span></code> 254 implements a <span class="emphasis"><em><span class="bold"><strong>map symmetric difference</strong></span></em></span> 255 function similar to <span class="emphasis"><em>set symmetric difference</em></span>. 256 All pairs that are common to both arguments are removed. All 257 others unified. 258 </p> 259 </td> 260</tr> 261</tbody> 262</table></div> 263</div> 264<div class="section"> 265<div class="titlepage"><div><div><h4 class="title"> 266<a name="boost_icl.function_reference.symmetric_difference.functions"></a><a class="link" href="symmetric_difference.html#boost_icl.function_reference.symmetric_difference.functions" title="Functions">Functions</a> 267</h4></div></div></div> 268<p> 269 <span class="emphasis"><em>Symmetric difference</em></span> is implemented on interval containers 270 by the function <code class="computeroutput"><span class="identifier">T</span><span class="special">&</span> 271 <span class="identifier">flip</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">&</span> <span class="identifier">operand</span><span class="special">)</span></code>. 272 </p> 273<p> 274</p> 275<pre class="programlisting"><span class="identifier">flip</span><span class="special">(</span><span class="identifier">y</span><span class="special">,</span><span class="identifier">x</span><span class="special">)</span> 276</pre> 277<p> 278 </p> 279<p> 280 deletes every element of <code class="computeroutput"><span class="identifier">y</span></code>, 281 if it is contained in <code class="computeroutput"><span class="identifier">x</span></code>. 282 Elements of <code class="computeroutput"><span class="identifier">x</span></code> not contained 283 in <code class="computeroutput"><span class="identifier">y</span></code> are added. For icl 284 containers flip is also availabel as memeber function <code class="computeroutput"><span class="identifier">T</span><span class="special">&</span> <span class="identifier">T</span><span class="special">::</span><span class="identifier">flip</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&</span> <span class="identifier">operand</span><span class="special">)</span></code>. 285 </p> 286<p> 287 The admissible combinations of types for member function <code class="computeroutput"><span class="identifier">T</span><span class="special">&</span> <span class="identifier">T</span><span class="special">::</span><span class="identifier">flip</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&)</span></code> 288 can be summarized in the <span class="emphasis"><em><span class="bold"><strong>overload table</strong></span></em></span> 289 below: 290 </p> 291<p> 292</p> 293<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> 294<span class="identifier">T</span><span class="special">&</span> <span class="identifier">T</span><span class="special">::</span><span class="identifier">flip</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&)</span> <span class="special">---+--------</span> 295<span class="identifier">T</span><span class="special">&</span> <span class="identifier">flip</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">&)</span> <span class="identifier">s</span> <span class="special">|</span> <span class="identifier">s</span> 296 <span class="identifier">m</span> <span class="special">|</span> <span class="identifier">m</span> 297 <span class="identifier">S</span> <span class="special">|</span> <span class="identifier">S</span> <span class="identifier">S</span> 298 <span class="identifier">M</span> <span class="special">|</span> <span class="identifier">M</span> <span class="identifier">M</span> 299</pre> 300<p> 301 </p> 302<p> 303 The next table contains complexity characteristics for functions <code class="computeroutput"><span class="identifier">flip</span></code>. 304 </p> 305<div class="table"> 306<a name="boost_icl.function_reference.symmetric_difference.functions.t0"></a><p class="title"><b>Table 1.37. Time Complexity for member functions flip on icl containers</b></p> 307<div class="table-contents"><table class="table" summary="Time Complexity for member functions flip on icl containers"> 308<colgroup> 309<col> 310<col> 311<col> 312<col> 313<col> 314</colgroup> 315<thead><tr> 316<th> 317 <p> 318 <code class="computeroutput"><span class="identifier">T</span><span class="special">&</span> 319 <span class="identifier">T</span><span class="special">::</span><span class="identifier">flip</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&)</span></code><br> <code class="computeroutput"><span class="identifier">T</span><span class="special">&</span> <span class="identifier">flip</span><span class="special">(</span><span class="identifier">T</span><span class="special">&,</span> <span class="keyword">const</span> 320 <span class="identifier">P</span><span class="special">&)</span></code> 321 </p> 322 </th> 323<th> 324 <p> 325 domain<br> type 326 </p> 327 </th> 328<th> 329 <p> 330 interval<br> type 331 </p> 332 </th> 333<th> 334 <p> 335 domain<br> mapping<br> type 336 </p> 337 </th> 338<th> 339 <p> 340 interval<br> mapping<br> type 341 </p> 342 </th> 343</tr></thead> 344<tbody> 345<tr> 346<td> 347 <p> 348 <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> 349 </p> 350 </td> 351<td> 352 <p> 353 <span class="emphasis"><em>O(log n)</em></span> 354 </p> 355 </td> 356<td> 357 </td> 358<td> 359 </td> 360<td> 361 </td> 362</tr> 363<tr> 364<td> 365 <p> 366 <code class="computeroutput"><a class="link" href="../../boost/icl/map.html" title="Class template map">icl::map</a></code> 367 </p> 368 </td> 369<td> 370 </td> 371<td> 372 </td> 373<td> 374 <p> 375 <span class="emphasis"><em>O(log n)</em></span> 376 </p> 377 </td> 378<td> 379 </td> 380</tr> 381<tr> 382<td> 383 <p> 384 <code class="computeroutput"><a class="link" href="../../boost/icl/interval_set.html" title="Class template interval_set">interval_set</a></code><br> 385 <code class="computeroutput"><a class="link" href="../../boost/icl/separate_interval_set.html" title="Class template separate_interval_set">separate_interval_set</a></code> 386 </p> 387 </td> 388<td> 389 <p> 390 <span class="emphasis"><em>O(log n)</em></span> 391 </p> 392 </td> 393<td> 394 <p> 395 <span class="emphasis"><em>O(n)</em></span> 396 </p> 397 </td> 398<td> 399 </td> 400<td> 401 </td> 402</tr> 403<tr> 404<td> 405 <p> 406 <code class="computeroutput"><a class="link" href="../../boost/icl/split_interval_set.html" title="Class template split_interval_set">split_interval_set</a></code> 407 </p> 408 </td> 409<td> 410 <p> 411 <span class="emphasis"><em>O(log n)</em></span> 412 </p> 413 </td> 414<td> 415 <p> 416 <span class="emphasis"><em>O(n)</em></span> 417 </p> 418 </td> 419<td> 420 </td> 421<td> 422 </td> 423</tr> 424<tr> 425<td> 426 <p> 427 <code class="computeroutput"><a class="link" href="../../boost/icl/interval_map.html" title="Class template interval_map">interval_map</a></code><br> 428 <code class="computeroutput"><a class="link" href="../../boost/icl/split_interval_map.html" title="Class template split_interval_map">split_interval_map</a></code> 429 </p> 430 </td> 431<td> 432 </td> 433<td> 434 </td> 435<td> 436 <p> 437 <span class="emphasis"><em>O(log n)</em></span> 438 </p> 439 </td> 440<td> 441 <p> 442 <span class="emphasis"><em>O(n)</em></span> 443 </p> 444 </td> 445</tr> 446</tbody> 447</table></div> 448</div> 449<br class="table-break"> 450</div> 451<div class="section"> 452<div class="titlepage"><div><div><h4 class="title"> 453<a name="boost_icl.function_reference.symmetric_difference.inplace_operators"></a><a class="link" href="symmetric_difference.html#boost_icl.function_reference.symmetric_difference.inplace_operators" title="Inplace operators">Inplace 454 operators</a> 455</h4></div></div></div> 456<p> 457 The overload tables below are giving admissible type combinations for 458 <code class="computeroutput"><span class="keyword">operator</span> <span class="special">^=</span></code> 459 that implements <span class="emphasis"><em><span class="bold"><strong>symmetric difference</strong></span></em></span>. 460 </p> 461<p> 462</p> 463<pre class="programlisting"><span class="comment">// overload tables for element containers: interval containers:</span> 464<span class="identifier">T</span><span class="special">&</span> <span class="keyword">operator</span> <span class="special">^=</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">&)</span> <span class="special">^=</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">^=</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> 465 <span class="special">---+--------</span> <span class="special">---+------------</span> 466 <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> 467 <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> 468</pre> 469<p> 470 Complexity characteristics for inplace operators that implement <span class="emphasis"><em><span class="bold"><strong>symmetric difference</strong></span></em></span> are given by the 471 next tables where 472</p> 473<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> 474<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</span> 475</pre> 476<p> 477 </p> 478<div class="table"> 479<a name="boost_icl.function_reference.symmetric_difference.inplace_operators.t0"></a><p class="title"><b>Table 1.38. Time Complexity for inplace symmetric difference on element containers</b></p> 480<div class="table-contents"><table class="table" summary="Time Complexity for inplace symmetric difference on element containers"> 481<colgroup> 482<col> 483<col> 484<col> 485<col> 486<col> 487</colgroup> 488<thead><tr> 489<th> 490 <p> 491 <code class="computeroutput"><span class="identifier">T</span><span class="special">&</span> 492 <span class="keyword">operator</span> <span class="special">&=</span> 493 <span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">y</span><span class="special">,</span> <span class="keyword">const</span> 494 <span class="identifier">P</span><span class="special">&</span> 495 <span class="identifier">x</span><span class="special">)</span></code> 496 </p> 497 </th> 498<th> 499 <p> 500 domain<br> type 501 </p> 502 </th> 503<th> 504 <p> 505 domain<br> mapping<br> type 506 </p> 507 </th> 508<th> 509 <p> 510 std::set 511 </p> 512 </th> 513<th> 514 <p> 515 icl::map 516 </p> 517 </th> 518</tr></thead> 519<tbody> 520<tr> 521<td> 522 <p> 523 <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> 524 </p> 525 </td> 526<td> 527 <p> 528 <span class="emphasis"><em>O(log n)</em></span> 529 </p> 530 </td> 531<td> 532 </td> 533<td> 534 <p> 535 <span class="emphasis"><em>O(m log n)</em></span> 536 </p> 537 </td> 538<td> 539 </td> 540</tr> 541<tr> 542<td> 543 <p> 544 <code class="computeroutput"><a class="link" href="../../boost/icl/map.html" title="Class template map">icl::map</a></code> 545 </p> 546 </td> 547<td> 548 <p> 549 <span class="emphasis"><em>O(log n)</em></span> 550 </p> 551 </td> 552<td> 553 <p> 554 <span class="emphasis"><em>O(log n)</em></span> 555 </p> 556 </td> 557<td> 558 <p> 559 <span class="emphasis"><em>O(m log n)</em></span> 560 </p> 561 </td> 562<td> 563 <p> 564 <span class="emphasis"><em>O(m log n)</em></span> 565 </p> 566 </td> 567</tr> 568</tbody> 569</table></div> 570</div> 571<br class="table-break"><div class="table"> 572<a name="boost_icl.function_reference.symmetric_difference.inplace_operators.t1"></a><p class="title"><b>Table 1.39. Time Complexity for inplace symmetric difference on interval containers</b></p> 573<div class="table-contents"><table class="table" summary="Time Complexity for inplace symmetric difference on interval containers"> 574<colgroup> 575<col> 576<col> 577<col> 578<col> 579<col> 580<col> 581<col> 582</colgroup> 583<thead><tr> 584<th> 585 <p> 586 <code class="computeroutput"><span class="identifier">T</span><span class="special">&</span> 587 <span class="keyword">operator</span> <span class="special">&=</span> 588 <span class="special">(</span><span class="identifier">T</span><span class="special">&,</span> <span class="keyword">const</span> 589 <span class="identifier">P</span><span class="special">&)</span></code> 590 </p> 591 </th> 592<th> 593 <p> 594 domain<br> type 595 </p> 596 </th> 597<th> 598 <p> 599 interval<br> type 600 </p> 601 </th> 602<th> 603 <p> 604 domain<br> mapping<br> type 605 </p> 606 </th> 607<th> 608 <p> 609 interval<br> mapping<br> type 610 </p> 611 </th> 612<th> 613 <p> 614 interval<br> sets 615 </p> 616 </th> 617<th> 618 <p> 619 interval<br> maps 620 </p> 621 </th> 622</tr></thead> 623<tbody> 624<tr> 625<td> 626 <p> 627 interval_sets 628 </p> 629 </td> 630<td> 631 <p> 632 <span class="emphasis"><em>O(log n)</em></span> 633 </p> 634 </td> 635<td> 636 <p> 637 <span class="emphasis"><em>O(n)</em></span> 638 </p> 639 </td> 640<td> 641 </td> 642<td> 643 </td> 644<td> 645 <p> 646 <span class="emphasis"><em>O(m log(n+m))</em></span> 647 </p> 648 </td> 649<td> 650 </td> 651</tr> 652<tr> 653<td> 654 <p> 655 interval_maps 656 </p> 657 </td> 658<td> 659 <p> 660 <span class="emphasis"><em>O(log n)</em></span> 661 </p> 662 </td> 663<td> 664 <p> 665 <span class="emphasis"><em>O(n)</em></span> 666 </p> 667 </td> 668<td> 669 <p> 670 <span class="emphasis"><em>O(log n)</em></span> 671 </p> 672 </td> 673<td> 674 <p> 675 <span class="emphasis"><em>O(n)</em></span> 676 </p> 677 </td> 678<td> 679 <p> 680 <span class="emphasis"><em>O(m log(n+m))</em></span> 681 </p> 682 </td> 683<td> 684 <p> 685 <span class="emphasis"><em>O(m log(n+m))</em></span> 686 </p> 687 </td> 688</tr> 689</tbody> 690</table></div> 691</div> 692<br class="table-break"> 693</div> 694<div class="section"> 695<div class="titlepage"><div><div><h4 class="title"> 696<a name="boost_icl.function_reference.symmetric_difference.infix_operators"></a><a class="link" href="symmetric_difference.html#boost_icl.function_reference.symmetric_difference.infix_operators" title="Infix operators">Infix 697 operators</a> 698</h4></div></div></div> 699<p> 700 For the infix version of symmetric difference the following overloads are 701 available: 702 </p> 703<p> 704</p> 705<pre class="programlisting"><span class="comment">// overload tables for element containers: interval containers:</span> 706<span class="identifier">T</span> <span class="keyword">operator</span> <span class="special">^</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">&)</span> <span class="special">^</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">^</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> 707<span class="identifier">T</span> <span class="keyword">operator</span> <span class="special">^</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&,</span> <span class="identifier">T</span><span class="special">)</span> <span class="special">---+--------</span> <span class="special">---+---------------------------</span> 708 <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> 709 <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">S1</span> <span class="identifier">S2</span> <span class="identifier">S3</span> 710 <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> 711 <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> 712 <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> 713 <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> 714 <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> 715 <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> 716 <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> 717</pre> 718<p> 719 </p> 720<p> 721 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 722 type. 723 </p> 724</div> 725<p> 726 <span class="emphasis"><em><span class="bold"><strong>See also . . .</strong></span></em></span> 727 </p> 728<div class="informaltable"><table class="table"> 729<colgroup><col></colgroup> 730<thead><tr></tr></thead> 731<tbody> 732<tr><td> 733 <p> 734 <a class="link" href="intersection.html" title="Intersection"><span class="emphasis"><em><span class="bold"><strong>Intersection</strong></span></em></span></a> 735 </p> 736 </td></tr> 737<tr><td> 738 <p> 739 <a class="link" href="subtraction.html" title="Subtraction"><span class="emphasis"><em><span class="bold"><strong>Subtraction</strong></span></em></span></a> 740 </p> 741 </td></tr> 742<tr><td> 743 <p> 744 <a class="link" href="addition.html" title="Addition"><span class="emphasis"><em><span class="bold"><strong>Addition</strong></span></em></span></a> 745 </p> 746 </td></tr> 747</tbody> 748</table></div> 749<p> 750 <span class="emphasis"><em><span class="bold"><strong>Back to section . . .</strong></span></em></span> 751 </p> 752<div class="informaltable"><table class="table"> 753<colgroup><col></colgroup> 754<thead><tr></tr></thead> 755<tbody> 756<tr><td> 757 <p> 758 <a class="link" href="../interface/function_synopsis.html#function_synopsis_table"><span class="emphasis"><em><span class="bold"><strong>Function 759 Synopsis</strong></span></em></span></a> 760 </p> 761 </td></tr> 762<tr><td> 763 <p> 764 <a class="link" href="../interface.html" title="Interface"><span class="emphasis"><em><span class="bold"><strong>Interface</strong></span></em></span></a> 765 </p> 766 </td></tr> 767</tbody> 768</table></div> 769</div> 770<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 771<td align="left"></td> 772<td align="right"><div class="copyright-footer">Copyright © 2007-2010 Joachim 773 Faulhaber<br>Copyright © 1999-2006 Cortex Software 774 GmbH<p> 775 Distributed under the Boost Software License, Version 1.0. (See accompanying 776 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>) 777 </p> 778</div></td> 779</tr></table> 780<hr> 781<div class="spirit-nav"> 782<a accesskey="p" href="intersection.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="iterator_related.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a> 783</div> 784</body> 785</html> 786