insertion.html 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
  4. <title>Insertion</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="subtraction.html" title="Subtraction">
  10. <link rel="next" href="erasure.html" title="Erasure">
  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="subtraction.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="erasure.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.insertion"></a><a class="link" href="insertion.html" title="Insertion">Insertion</a>
  28. </h3></div></div></div>
  29. <div class="toc"><dl class="toc">
  30. <dt><span class="section"><a href="insertion.html#boost_icl.function_reference.insertion.synopsis">Synopsis</a></span></dt>
  31. <dt><span class="section"><a href="insertion.html#boost_icl.function_reference.insertion.insertion">Insertion</a></span></dt>
  32. <dt><span class="section"><a href="insertion.html#boost_icl.function_reference.insertion.setting_values">Setting
  33. values</a></span></dt>
  34. </dl></div>
  35. <div class="section">
  36. <div class="titlepage"><div><div><h4 class="title">
  37. <a name="boost_icl.function_reference.insertion.synopsis"></a><a class="link" href="insertion.html#boost_icl.function_reference.insertion.synopsis" title="Synopsis">Synopsis</a>
  38. </h4></div></div></div>
  39. <div class="informaltable"><table class="table">
  40. <colgroup>
  41. <col>
  42. <col>
  43. <col>
  44. <col>
  45. <col>
  46. </colgroup>
  47. <thead><tr>
  48. <th>
  49. <p>
  50. <span class="emphasis"><em><span class="bold"><strong>Insertion</strong></span></em></span>
  51. </p>
  52. </th>
  53. <th>
  54. <p>
  55. interval<br> sets
  56. </p>
  57. </th>
  58. <th>
  59. <p>
  60. interval<br> maps
  61. </p>
  62. </th>
  63. <th>
  64. <p>
  65. element<br> sets
  66. </p>
  67. </th>
  68. <th>
  69. <p>
  70. element<br> maps
  71. </p>
  72. </th>
  73. </tr></thead>
  74. <tbody>
  75. <tr>
  76. <td>
  77. <p>
  78. <code class="computeroutput"><span class="identifier">V</span> <span class="identifier">T</span><span class="special">::</span><span class="identifier">insert</span><span class="special">(</span><span class="keyword">const</span>
  79. <span class="identifier">P</span><span class="special">&amp;)</span></code>
  80. </p>
  81. </td>
  82. <td>
  83. <p>
  84. <a class="link" href="../interface/function_synopsis.html#element_type"><span class="bold"><strong>e</strong></span></a>
  85. <a class="link" href="../interface/function_synopsis.html#interval_type"><span class="bold"><strong>i</strong></span></a>
  86. </p>
  87. </td>
  88. <td>
  89. <p>
  90. <a class="link" href="../interface/function_synopsis.html#element_mapping_type"><span class="bold"><strong>b</strong></span></a>
  91. <a class="link" href="../interface/function_synopsis.html#interval_mapping_type"><span class="bold"><strong>p</strong></span></a>
  92. </p>
  93. </td>
  94. <td>
  95. <p>
  96. <a class="link" href="../interface/function_synopsis.html#element_type"><span class="bold"><strong>e</strong></span></a>
  97. </p>
  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">V</span> <span class="identifier">insert</span><span class="special">(</span><span class="identifier">T</span><span class="special">&amp;,</span> <span class="keyword">const</span>
  109. <span class="identifier">P</span><span class="special">&amp;)</span></code>
  110. </p>
  111. </td>
  112. <td>
  113. <p>
  114. <a class="link" href="../interface/function_synopsis.html#element_type"><span class="bold"><strong>e</strong></span></a>
  115. <a class="link" href="../interface/function_synopsis.html#interval_type"><span class="bold"><strong>i</strong></span></a>
  116. </p>
  117. </td>
  118. <td>
  119. <p>
  120. <a class="link" href="../interface/function_synopsis.html#element_mapping_type"><span class="bold"><strong>b</strong></span></a>
  121. <a class="link" href="../interface/function_synopsis.html#interval_mapping_type"><span class="bold"><strong>p</strong></span></a>
  122. </p>
  123. </td>
  124. <td>
  125. <p>
  126. <a class="link" href="../interface/function_synopsis.html#element_type"><span class="bold"><strong>e</strong></span></a>
  127. </p>
  128. </td>
  129. <td>
  130. <p>
  131. <a class="link" href="../interface/function_synopsis.html#element_mapping_type"><span class="bold"><strong>b</strong></span></a>
  132. </p>
  133. </td>
  134. </tr>
  135. <tr>
  136. <td>
  137. <p>
  138. <code class="computeroutput"><span class="identifier">J</span> <span class="identifier">T</span><span class="special">::</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">J</span>
  139. <span class="identifier">pos</span><span class="special">,</span>
  140. <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span></code>
  141. </p>
  142. </td>
  143. <td>
  144. <p>
  145. <a class="link" href="../interface/function_synopsis.html#interval_type"><span class="bold"><strong>i</strong></span></a>
  146. </p>
  147. </td>
  148. <td>
  149. <p>
  150. <a class="link" href="../interface/function_synopsis.html#interval_mapping_type"><span class="bold"><strong>p</strong></span></a>
  151. </p>
  152. </td>
  153. <td>
  154. <p>
  155. <a class="link" href="../interface/function_synopsis.html#element_type"><span class="bold"><strong>e</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. </p>
  162. </td>
  163. </tr>
  164. <tr>
  165. <td>
  166. <p>
  167. <code class="computeroutput"><span class="identifier">J</span> <span class="identifier">insert</span><span class="special">(</span><span class="identifier">T</span><span class="special">&amp;,</span> <span class="identifier">J</span>
  168. <span class="identifier">pos</span><span class="special">,</span>
  169. <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span></code>
  170. </p>
  171. </td>
  172. <td>
  173. <p>
  174. <a class="link" href="../interface/function_synopsis.html#interval_type"><span class="bold"><strong>i</strong></span></a>
  175. </p>
  176. </td>
  177. <td>
  178. <p>
  179. <a class="link" href="../interface/function_synopsis.html#interval_mapping_type"><span class="bold"><strong>p</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. </p>
  186. </td>
  187. <td>
  188. <p>
  189. <a class="link" href="../interface/function_synopsis.html#element_mapping_type"><span class="bold"><strong>b</strong></span></a>
  190. </p>
  191. </td>
  192. </tr>
  193. <tr>
  194. <td>
  195. <p>
  196. <code class="computeroutput"><span class="identifier">T</span><span class="special">&amp;</span>
  197. <span class="identifier">insert</span><span class="special">(</span><span class="identifier">T</span><span class="special">&amp;,</span>
  198. <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span></code>
  199. </p>
  200. </td>
  201. <td>
  202. <p>
  203. <a class="link" href="../interface/function_synopsis.html#element_type"><span class="bold"><strong>e</strong></span></a>
  204. <a class="link" href="../interface/function_synopsis.html#interval_type"><span class="bold"><strong>i</strong></span></a>
  205. <a class="link" href="../interface/function_synopsis.html#interval_set_types"><span class="bold"><strong>S</strong></span></a>
  206. </p>
  207. </td>
  208. <td>
  209. <p>
  210. <a class="link" href="../interface/function_synopsis.html#element_mapping_type"><span class="bold"><strong>b</strong></span></a>
  211. <a class="link" href="../interface/function_synopsis.html#interval_mapping_type"><span class="bold"><strong>p</strong></span></a>
  212. <a class="link" href="../interface/function_synopsis.html#interval_map_types"><span class="bold"><strong>M</strong></span></a>
  213. </p>
  214. </td>
  215. <td>
  216. <p>
  217. <a class="link" href="../interface/function_synopsis.html#element_type"><span class="bold"><strong>e</strong></span></a>
  218. <a class="link" href="../interface/function_synopsis.html#itl_set_type"><span class="bold"><strong>s</strong></span></a>
  219. </p>
  220. </td>
  221. <td>
  222. <p>
  223. <a class="link" href="../interface/function_synopsis.html#element_mapping_type"><span class="bold"><strong>b</strong></span></a>
  224. <a class="link" href="../interface/function_synopsis.html#itl_map_type"><span class="bold"><strong>m</strong></span></a>
  225. </p>
  226. </td>
  227. </tr>
  228. <tr>
  229. <td>
  230. <p>
  231. <code class="computeroutput"><span class="identifier">T</span><span class="special">&amp;</span>
  232. <span class="identifier">T</span><span class="special">::</span><span class="identifier">set</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span></code>
  233. </p>
  234. </td>
  235. <td>
  236. </td>
  237. <td>
  238. <p>
  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. </p>
  242. </td>
  243. <td>
  244. </td>
  245. <td>
  246. <p>
  247. 1
  248. </p>
  249. </td>
  250. </tr>
  251. <tr>
  252. <td>
  253. <p>
  254. <code class="computeroutput"><span class="identifier">T</span><span class="special">&amp;</span>
  255. <span class="identifier">set_at</span><span class="special">(</span><span class="identifier">T</span><span class="special">&amp;,</span>
  256. <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span></code>
  257. </p>
  258. </td>
  259. <td>
  260. </td>
  261. <td>
  262. <p>
  263. <a class="link" href="../interface/function_synopsis.html#element_mapping_type"><span class="bold"><strong>b</strong></span></a>
  264. <a class="link" href="../interface/function_synopsis.html#interval_mapping_type"><span class="bold"><strong>p</strong></span></a>
  265. </p>
  266. </td>
  267. <td>
  268. </td>
  269. <td>
  270. <p>
  271. 1
  272. </p>
  273. </td>
  274. </tr>
  275. </tbody>
  276. </table></div>
  277. <h6>
  278. <a name="boost_icl.function_reference.insertion.synopsis.h0"></a>
  279. <span class="phrase"><a name="boost_icl.function_reference.insertion.synopsis.insertion"></a></span><a class="link" href="insertion.html#boost_icl.function_reference.insertion.synopsis.insertion">Insertion</a>
  280. </h6>
  281. <p>
  282. The effects of <span class="emphasis"><em><span class="bold"><strong>insertion</strong></span></em></span>
  283. implemented by <code class="computeroutput"><span class="identifier">insert</span></code> and
  284. <span class="emphasis"><em><span class="bold"><strong>addition</strong></span></em></span> implemented
  285. by <code class="computeroutput"><span class="identifier">add</span></code> and <code class="computeroutput"><span class="keyword">operator</span> <span class="special">+=</span></code>
  286. are identical for all Set-types of the <span class="bold"><strong>icl</strong></span>.
  287. </p>
  288. <p>
  289. For Map-types, <code class="computeroutput"><span class="identifier">insert</span></code> provides
  290. the <span class="bold"><strong>stl</strong></span> semantics of insertion in contrast
  291. to <code class="computeroutput"><span class="identifier">add</span></code> and <code class="computeroutput"><span class="keyword">operator</span> <span class="special">+=</span></code>,
  292. that implement a generalized addition, that performs aggregations if key
  293. values collide or key intervals overlap. <code class="computeroutput"><span class="identifier">insert</span></code>
  294. on Maps does not alter a maps content at the points, where the keys of
  295. the object to inserted overlap or collide with keys that are already in
  296. the map.
  297. </p>
  298. <h6>
  299. <a name="boost_icl.function_reference.insertion.synopsis.h1"></a>
  300. <span class="phrase"><a name="boost_icl.function_reference.insertion.synopsis.setting_values"></a></span><a class="link" href="insertion.html#boost_icl.function_reference.insertion.synopsis.setting_values">Setting
  301. values</a>
  302. </h6>
  303. <p>
  304. Overwriting values using <code class="computeroutput"><span class="keyword">operator</span><span class="special">[]</span></code> like in
  305. </p>
  306. <pre class="programlisting"><span class="identifier">my_map</span><span class="special">[</span><span class="identifier">key</span><span class="special">]</span> <span class="special">=</span> <span class="identifier">new_value</span><span class="special">;</span>
  307. </pre>
  308. <p>
  309. is not provided for <code class="computeroutput"><a class="link" href="../../boost/icl/interval_map.html" title="Class template interval_map">interval_maps</a></code>
  310. because an <code class="computeroutput"><span class="keyword">operator</span><span class="special">[]</span></code>
  311. is not implemented for them. As a substitute a function <code class="computeroutput"><span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">T</span><span class="special">::</span><span class="identifier">set</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span></code>
  312. can be used to achieve the same effect:
  313. </p>
  314. <pre class="programlisting"><span class="identifier">my_map</span><span class="special">.</span><span class="identifier">set</span><span class="special">(</span><span class="identifier">make_pair</span><span class="special">(</span><span class="identifier">overwrite_this</span><span class="special">,</span> <span class="identifier">new_value</span><span class="special">));</span>
  315. </pre>
  316. <p>
  317. </p>
  318. </div>
  319. <div class="section">
  320. <div class="titlepage"><div><div><h4 class="title">
  321. <a name="boost_icl.function_reference.insertion.insertion"></a><a class="link" href="insertion.html#boost_icl.function_reference.insertion.insertion" title="Insertion">Insertion</a>
  322. </h4></div></div></div>
  323. <p>
  324. </p>
  325. <pre class="programlisting"><span class="comment">// overload table for functions T\P| e i b p </span>
  326. <span class="identifier">V</span> <span class="identifier">T</span><span class="special">::</span><span class="identifier">insert</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span> <span class="special">---+--------</span>
  327. <span class="identifier">V</span> <span class="identifier">insert</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="identifier">s</span> <span class="special">|</span> <span class="identifier">s</span>
  328. <span class="identifier">m</span> <span class="special">|</span> <span class="identifier">m</span>
  329. <span class="identifier">S</span> <span class="special">|</span> <span class="identifier">S</span>
  330. <span class="identifier">M</span> <span class="special">|</span> <span class="identifier">M</span>
  331. </pre>
  332. <p>
  333. </p>
  334. <div class="table">
  335. <a name="boost_icl.function_reference.insertion.insertion.t0"></a><p class="title"><b>Table&#160;1.27.&#160;Time Complexity for member function insert on icl containers</b></p>
  336. <div class="table-contents"><table class="table" summary="Time Complexity for member function insert on icl containers">
  337. <colgroup>
  338. <col>
  339. <col>
  340. <col>
  341. <col>
  342. <col>
  343. </colgroup>
  344. <thead><tr>
  345. <th>
  346. <p>
  347. <code class="computeroutput"><span class="identifier">T</span><span class="special">&amp;</span>
  348. <span class="identifier">T</span><span class="special">::</span><span class="identifier">insert</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span></code>
  349. </p>
  350. </th>
  351. <th>
  352. <p>
  353. domain<br> type
  354. </p>
  355. </th>
  356. <th>
  357. <p>
  358. interval<br> type
  359. </p>
  360. </th>
  361. <th>
  362. <p>
  363. domain<br> mapping<br> type
  364. </p>
  365. </th>
  366. <th>
  367. <p>
  368. interval<br> mapping<br> type
  369. </p>
  370. </th>
  371. </tr></thead>
  372. <tbody>
  373. <tr>
  374. <td>
  375. <p>
  376. <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>
  377. </p>
  378. </td>
  379. <td>
  380. <p>
  381. <span class="emphasis"><em>O(log n)</em></span>
  382. </p>
  383. </td>
  384. <td>
  385. </td>
  386. <td>
  387. </td>
  388. <td>
  389. </td>
  390. </tr>
  391. <tr>
  392. <td>
  393. <p>
  394. <code class="computeroutput"><a class="link" href="../../boost/icl/map.html" title="Class template map">icl::map</a></code>
  395. </p>
  396. </td>
  397. <td>
  398. </td>
  399. <td>
  400. </td>
  401. <td>
  402. <p>
  403. <span class="emphasis"><em>O(log n)</em></span>
  404. </p>
  405. </td>
  406. <td>
  407. </td>
  408. </tr>
  409. <tr>
  410. <td>
  411. <p>
  412. <code class="computeroutput"><a class="link" href="../../boost/icl/interval_set.html" title="Class template interval_set">interval_set</a></code><br>
  413. <code class="computeroutput"><a class="link" href="../../boost/icl/separate_interval_set.html" title="Class template separate_interval_set">separate_interval_set</a></code>
  414. </p>
  415. </td>
  416. <td>
  417. <p>
  418. <span class="emphasis"><em>O(log n)</em></span>
  419. </p>
  420. </td>
  421. <td>
  422. <p>
  423. <span class="emphasis"><em>amortized<br> O(log n)</em></span>
  424. </p>
  425. </td>
  426. <td>
  427. </td>
  428. <td>
  429. </td>
  430. </tr>
  431. <tr>
  432. <td>
  433. <p>
  434. <code class="computeroutput"><a class="link" href="../../boost/icl/split_interval_set.html" title="Class template split_interval_set">split_interval_set</a></code>
  435. </p>
  436. </td>
  437. <td>
  438. <p>
  439. <span class="emphasis"><em>O(log n)</em></span>
  440. </p>
  441. </td>
  442. <td>
  443. <p>
  444. <span class="emphasis"><em>O(n)</em></span>
  445. </p>
  446. </td>
  447. <td>
  448. </td>
  449. <td>
  450. </td>
  451. </tr>
  452. <tr>
  453. <td>
  454. <p>
  455. <code class="computeroutput"><a class="link" href="../../boost/icl/interval_map.html" title="Class template interval_map">interval_map</a></code><br>
  456. <code class="computeroutput"><a class="link" href="../../boost/icl/split_interval_map.html" title="Class template split_interval_map">split_interval_map</a></code>
  457. </p>
  458. </td>
  459. <td>
  460. </td>
  461. <td>
  462. </td>
  463. <td>
  464. <p>
  465. <span class="emphasis"><em>O(log n)</em></span>
  466. </p>
  467. </td>
  468. <td>
  469. <p>
  470. <span class="emphasis"><em>O(n)</em></span>
  471. </p>
  472. </td>
  473. </tr>
  474. </tbody>
  475. </table></div>
  476. </div>
  477. <br class="table-break"><p>
  478. </p>
  479. <pre class="programlisting"><span class="comment">// overload tables for function element containers: interval containers: </span>
  480. <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">insert</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="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>
  481. <span class="special">---+--------</span> <span class="special">---+------------</span>
  482. <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>
  483. <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>
  484. </pre>
  485. <p>
  486. </p>
  487. <div class="table">
  488. <a name="boost_icl.function_reference.insertion.insertion.t1"></a><p class="title"><b>Table&#160;1.28.&#160;Time Complexity for inplace insertion on element containers</b></p>
  489. <div class="table-contents"><table class="table" summary="Time Complexity for inplace insertion on element containers">
  490. <colgroup>
  491. <col>
  492. <col>
  493. <col>
  494. <col>
  495. <col>
  496. </colgroup>
  497. <thead><tr>
  498. <th>
  499. <p>
  500. <code class="computeroutput"><span class="identifier">T</span><span class="special">&amp;</span>
  501. <span class="identifier">insert</span><span class="special">(</span><span class="identifier">T</span><span class="special">&amp;</span>
  502. <span class="identifier">y</span><span class="special">,</span>
  503. <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>
  504. </p>
  505. </th>
  506. <th>
  507. <p>
  508. domain<br> type
  509. </p>
  510. </th>
  511. <th>
  512. <p>
  513. domain<br> mapping<br> type
  514. </p>
  515. </th>
  516. <th>
  517. <p>
  518. interval<br> sets
  519. </p>
  520. </th>
  521. <th>
  522. <p>
  523. interval<br> maps
  524. </p>
  525. </th>
  526. </tr></thead>
  527. <tbody>
  528. <tr>
  529. <td>
  530. <p>
  531. <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>
  532. </p>
  533. </td>
  534. <td>
  535. <p>
  536. <span class="emphasis"><em>O(log n)</em></span>
  537. </p>
  538. </td>
  539. <td>
  540. </td>
  541. <td>
  542. <p>
  543. <span class="emphasis"><em>O(m)</em></span>
  544. </p>
  545. </td>
  546. <td>
  547. </td>
  548. </tr>
  549. <tr>
  550. <td>
  551. <p>
  552. <code class="computeroutput"><a class="link" href="../../boost/icl/map.html" title="Class template map">icl::map</a></code>
  553. </p>
  554. </td>
  555. <td>
  556. </td>
  557. <td>
  558. <p>
  559. <span class="emphasis"><em>O(log n)</em></span>
  560. </p>
  561. </td>
  562. <td>
  563. </td>
  564. <td>
  565. <p>
  566. <span class="emphasis"><em>O(m)</em></span>
  567. </p>
  568. </td>
  569. </tr>
  570. </tbody>
  571. </table></div>
  572. </div>
  573. <br class="table-break"><p>
  574. Time complexity characteristics of inplace insertion for interval containers
  575. is given by this table.
  576. </p>
  577. <div class="table">
  578. <a name="boost_icl.function_reference.insertion.insertion.t2"></a><p class="title"><b>Table&#160;1.29.&#160;Time Complexity for inplace insertion on interval containers</b></p>
  579. <div class="table-contents"><table class="table" summary="Time Complexity for inplace insertion on interval containers">
  580. <colgroup>
  581. <col>
  582. <col>
  583. <col>
  584. <col>
  585. <col>
  586. <col>
  587. <col>
  588. <col>
  589. </colgroup>
  590. <thead><tr>
  591. <th>
  592. <p>
  593. <code class="computeroutput"><span class="identifier">T</span><span class="special">&amp;</span>
  594. <span class="identifier">insert</span><span class="special">(</span><span class="identifier">T</span><span class="special">&amp;</span>
  595. <span class="identifier">y</span><span class="special">,</span>
  596. <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>
  597. </p>
  598. </th>
  599. <th>
  600. </th>
  601. <th>
  602. <p>
  603. domain<br> type
  604. </p>
  605. </th>
  606. <th>
  607. <p>
  608. interval<br> type
  609. </p>
  610. </th>
  611. <th>
  612. <p>
  613. domain<br> mapping<br> type
  614. </p>
  615. </th>
  616. <th>
  617. <p>
  618. interval<br> mapping<br> type
  619. </p>
  620. </th>
  621. <th>
  622. <p>
  623. interval<br> sets
  624. </p>
  625. </th>
  626. <th>
  627. <p>
  628. interval<br> maps
  629. </p>
  630. </th>
  631. </tr></thead>
  632. <tbody>
  633. <tr>
  634. <td>
  635. <p>
  636. interval_sets
  637. </p>
  638. </td>
  639. <td>
  640. <p>
  641. <code class="computeroutput"><a class="link" href="../../boost/icl/interval_set.html" title="Class template interval_set">interval_set</a></code><br>
  642. <code class="computeroutput"><a class="link" href="../../boost/icl/separate_interval_set.html" title="Class template separate_interval_set">separate_interval_set</a></code>
  643. </p>
  644. </td>
  645. <td>
  646. <p>
  647. <span class="emphasis"><em>O(log n)</em></span>
  648. </p>
  649. </td>
  650. <td>
  651. <p>
  652. <span class="emphasis"><em>amortized<br> O(log n)</em></span>
  653. </p>
  654. </td>
  655. <td>
  656. </td>
  657. <td>
  658. </td>
  659. <td>
  660. <p>
  661. <span class="emphasis"><em>O(m log(n+m))</em></span>
  662. </p>
  663. </td>
  664. <td>
  665. </td>
  666. </tr>
  667. <tr>
  668. <td>
  669. </td>
  670. <td>
  671. <p>
  672. <code class="computeroutput"><a class="link" href="../../boost/icl/split_interval_set.html" title="Class template split_interval_set">split_interval_set</a></code>
  673. </p>
  674. </td>
  675. <td>
  676. <p>
  677. <span class="emphasis"><em>O(log n)</em></span>
  678. </p>
  679. </td>
  680. <td>
  681. <p>
  682. <span class="emphasis"><em>O(n)</em></span>
  683. </p>
  684. </td>
  685. <td>
  686. </td>
  687. <td>
  688. </td>
  689. <td>
  690. <p>
  691. <span class="emphasis"><em>O(m log(n+m))</em></span>
  692. </p>
  693. </td>
  694. <td>
  695. </td>
  696. </tr>
  697. <tr>
  698. <td>
  699. <p>
  700. interval_maps
  701. </p>
  702. </td>
  703. <td>
  704. </td>
  705. <td>
  706. </td>
  707. <td>
  708. </td>
  709. <td>
  710. <p>
  711. <span class="emphasis"><em>O(log n)</em></span>
  712. </p>
  713. </td>
  714. <td>
  715. <p>
  716. <span class="emphasis"><em>O(n)</em></span>
  717. </p>
  718. </td>
  719. <td>
  720. </td>
  721. <td>
  722. <p>
  723. <span class="emphasis"><em>O(m log(n+m))</em></span>
  724. </p>
  725. </td>
  726. </tr>
  727. </tbody>
  728. </table></div>
  729. </div>
  730. <br class="table-break"><h5>
  731. <a name="boost_icl.function_reference.insertion.insertion.h0"></a>
  732. <span class="phrase"><a name="boost_icl.function_reference.insertion.insertion.hinted_insertion"></a></span><a class="link" href="insertion.html#boost_icl.function_reference.insertion.insertion.hinted_insertion">Hinted
  733. insertion</a>
  734. </h5>
  735. <p>
  736. Function <code class="computeroutput"><span class="identifier">J</span> <span class="identifier">T</span><span class="special">::</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">J</span> <span class="identifier">prior</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;</span> <span class="identifier">addend</span><span class="special">)</span></code>
  737. allows for an insertion in <span class="emphasis"><em><span class="bold"><strong>constant time</strong></span></em></span>,
  738. if <code class="computeroutput"><span class="identifier">addend</span></code> can be inserted
  739. right after iterator <code class="computeroutput"><span class="identifier">prior</span></code>
  740. without collision. If this is not possible the complexity characteristics
  741. are as stated for the non hinted insertion above. Hinted insertion is available
  742. for these combinations of types:
  743. </p>
  744. <pre class="programlisting"><span class="comment">// overload table for insertion with hint T\P| e i b p </span>
  745. <span class="identifier">J</span> <span class="identifier">T</span><span class="special">::</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">J</span> <span class="identifier">pos</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span> <span class="special">---+--------</span>
  746. <span class="identifier">J</span> <span class="identifier">insert</span><span class="special">(</span><span class="identifier">T</span><span class="special">&amp;,</span> <span class="identifier">J</span> <span class="identifier">pos</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span> <span class="identifier">s</span> <span class="special">|</span> <span class="identifier">s</span>
  747. <span class="identifier">m</span> <span class="special">|</span> <span class="identifier">m</span>
  748. <span class="identifier">S</span> <span class="special">|</span> <span class="identifier">S</span>
  749. <span class="identifier">M</span> <span class="special">|</span> <span class="identifier">M</span>
  750. </pre>
  751. <p>
  752. </p>
  753. </div>
  754. <div class="section">
  755. <div class="titlepage"><div><div><h4 class="title">
  756. <a name="boost_icl.function_reference.insertion.setting_values"></a><a class="link" href="insertion.html#boost_icl.function_reference.insertion.setting_values" title="Setting values">Setting
  757. values</a>
  758. </h4></div></div></div>
  759. <p>
  760. </p>
  761. <pre class="programlisting"><span class="comment">// overload table for member function T\P| b p </span>
  762. <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">T</span><span class="special">::</span><span class="identifier">set</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span> <span class="special">---+----</span>
  763. <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">set_at</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="identifier">m</span> <span class="special">|</span> <span class="identifier">m</span>
  764. <span class="identifier">M</span> <span class="special">|</span> <span class="identifier">M</span>
  765. </pre>
  766. <p>
  767. </p>
  768. <div class="table">
  769. <a name="boost_icl.function_reference.insertion.setting_values.t0"></a><p class="title"><b>Table&#160;1.30.&#160;Time Complexity for member function `set`</b></p>
  770. <div class="table-contents"><table class="table" summary="Time Complexity for member function `set`">
  771. <colgroup>
  772. <col>
  773. <col>
  774. <col>
  775. </colgroup>
  776. <thead><tr>
  777. <th>
  778. <p>
  779. <code class="computeroutput"><span class="identifier">T</span><span class="special">&amp;</span>
  780. <span class="identifier">set</span><span class="special">(</span><span class="identifier">T</span><span class="special">&amp;,</span>
  781. <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span></code>
  782. </p>
  783. </th>
  784. <th>
  785. <p>
  786. domain_mapping_type
  787. </p>
  788. </th>
  789. <th>
  790. <p>
  791. interval_mapping_type
  792. </p>
  793. </th>
  794. </tr></thead>
  795. <tbody>
  796. <tr>
  797. <td>
  798. <p>
  799. icl::map
  800. </p>
  801. </td>
  802. <td>
  803. <p>
  804. <span class="emphasis"><em>O(log n)</em></span>
  805. </p>
  806. </td>
  807. <td>
  808. </td>
  809. </tr>
  810. <tr>
  811. <td>
  812. <p>
  813. interval_maps
  814. </p>
  815. </td>
  816. <td>
  817. </td>
  818. <td>
  819. <p>
  820. <span class="emphasis"><em>amortized<br> O(log n)</em></span>
  821. </p>
  822. </td>
  823. </tr>
  824. </tbody>
  825. </table></div>
  826. </div>
  827. <br class="table-break">
  828. </div>
  829. <p>
  830. <span class="emphasis"><em><span class="bold"><strong>See also . . .</strong></span></em></span>
  831. </p>
  832. <div class="informaltable"><table class="table">
  833. <colgroup><col></colgroup>
  834. <thead><tr></tr></thead>
  835. <tbody>
  836. <tr><td>
  837. <p>
  838. <a class="link" href="addition.html" title="Addition"><span class="emphasis"><em><span class="bold"><strong>Erasure</strong></span></em></span></a>
  839. </p>
  840. </td></tr>
  841. <tr><td>
  842. <p>
  843. <a class="link" href="addition.html" title="Addition"><span class="emphasis"><em><span class="bold"><strong>Addition</strong></span></em></span></a>
  844. </p>
  845. </td></tr>
  846. </tbody>
  847. </table></div>
  848. <p>
  849. <span class="emphasis"><em><span class="bold"><strong>Back to section . . .</strong></span></em></span>
  850. </p>
  851. <div class="informaltable"><table class="table">
  852. <colgroup><col></colgroup>
  853. <thead><tr></tr></thead>
  854. <tbody>
  855. <tr><td>
  856. <p>
  857. <a class="link" href="../interface/function_synopsis.html#function_synopsis_table"><span class="emphasis"><em><span class="bold"><strong>Function
  858. Synopsis</strong></span></em></span></a>
  859. </p>
  860. </td></tr>
  861. <tr><td>
  862. <p>
  863. <a class="link" href="../interface.html" title="Interface"><span class="emphasis"><em><span class="bold"><strong>Interface</strong></span></em></span></a>
  864. </p>
  865. </td></tr>
  866. </tbody>
  867. </table></div>
  868. </div>
  869. <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
  870. <td align="left"></td>
  871. <td align="right"><div class="copyright-footer">Copyright &#169; 2007-2010 Joachim
  872. Faulhaber<br>Copyright &#169; 1999-2006 Cortex Software
  873. GmbH<p>
  874. Distributed under the Boost Software License, Version 1.0. (See accompanying
  875. 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>)
  876. </p>
  877. </div></td>
  878. </tr></table>
  879. <hr>
  880. <div class="spirit-nav">
  881. <a accesskey="p" href="subtraction.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="erasure.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
  882. </div>
  883. </body>
  884. </html>