interval_construction.html 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
  4. <title>Interval Construction</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="streaming__conversion.html" title="Streaming, conversion">
  10. <link rel="next" href="additional_interval_orderings.html" title="Additional Interval Orderings">
  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="streaming__conversion.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="additional_interval_orderings.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.interval_construction"></a><a class="link" href="interval_construction.html" title="Interval Construction">Interval
  28. Construction</a>
  29. </h3></div></div></div>
  30. <div class="informaltable"><table class="table">
  31. <colgroup>
  32. <col>
  33. <col>
  34. <col>
  35. <col>
  36. <col>
  37. <col>
  38. <col>
  39. </colgroup>
  40. <thead><tr>
  41. <th>
  42. <p>
  43. T
  44. </p>
  45. </th>
  46. <th>
  47. <p>
  48. discrete<br> _interval
  49. </p>
  50. </th>
  51. <th>
  52. <p>
  53. continuous<br> _interval
  54. </p>
  55. </th>
  56. <th>
  57. <p>
  58. right_open<br> _interval
  59. </p>
  60. </th>
  61. <th>
  62. <p>
  63. left_open<br> _interval
  64. </p>
  65. </th>
  66. <th>
  67. <p>
  68. closed<br> _interval
  69. </p>
  70. </th>
  71. <th>
  72. <p>
  73. open<br> _interval
  74. </p>
  75. </th>
  76. </tr></thead>
  77. <tbody>
  78. <tr>
  79. <td>
  80. <p>
  81. Interval bounds
  82. </p>
  83. </td>
  84. <td>
  85. <p>
  86. dynamic
  87. </p>
  88. </td>
  89. <td>
  90. <p>
  91. dynamic
  92. </p>
  93. </td>
  94. <td>
  95. <p>
  96. static
  97. </p>
  98. </td>
  99. <td>
  100. <p>
  101. static
  102. </p>
  103. </td>
  104. <td>
  105. <p>
  106. static
  107. </p>
  108. </td>
  109. <td>
  110. <p>
  111. static
  112. </p>
  113. </td>
  114. </tr>
  115. <tr>
  116. <td>
  117. <p>
  118. Form
  119. </p>
  120. </td>
  121. <td>
  122. </td>
  123. <td>
  124. </td>
  125. <td>
  126. <p>
  127. asymmetric
  128. </p>
  129. </td>
  130. <td>
  131. <p>
  132. asymmetric
  133. </p>
  134. </td>
  135. <td>
  136. <p>
  137. symmetric
  138. </p>
  139. </td>
  140. <td>
  141. <p>
  142. symmetric
  143. </p>
  144. </td>
  145. </tr>
  146. <tr>
  147. <td>
  148. <p>
  149. <span class="emphasis"><em><span class="bold"><strong>Construct</strong></span></em></span>
  150. </p>
  151. </td>
  152. <td>
  153. </td>
  154. <td>
  155. </td>
  156. <td>
  157. </td>
  158. <td>
  159. </td>
  160. <td>
  161. </td>
  162. <td>
  163. </td>
  164. </tr>
  165. <tr>
  166. <td>
  167. <p>
  168. <code class="computeroutput"><span class="identifier">T</span> <span class="identifier">singleton</span><span class="special">(</span><span class="keyword">const</span>
  169. <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#discrete_types"><span class="bold"><strong>d</strong></span></a>
  175. </p>
  176. </td>
  177. <td>
  178. <p>
  179. <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
  180. </p>
  181. </td>
  182. <td>
  183. <p>
  184. <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
  185. </p>
  186. </td>
  187. <td>
  188. <p>
  189. <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
  190. </p>
  191. </td>
  192. <td>
  193. <p>
  194. <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
  195. </p>
  196. </td>
  197. <td>
  198. <p>
  199. <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
  200. </p>
  201. </td>
  202. </tr>
  203. <tr>
  204. <td>
  205. <p>
  206. <code class="computeroutput"><span class="identifier">T</span> <span class="identifier">construct</span><span class="special">(</span><span class="keyword">const</span>
  207. <span class="identifier">P</span><span class="special">&amp;,</span>
  208. <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span></code>
  209. </p>
  210. </td>
  211. <td>
  212. <p>
  213. <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
  214. </p>
  215. </td>
  216. <td>
  217. <p>
  218. <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
  219. </p>
  220. </td>
  221. <td>
  222. <p>
  223. <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
  224. <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
  225. </p>
  226. </td>
  227. <td>
  228. <p>
  229. <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
  230. <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
  231. </p>
  232. </td>
  233. <td>
  234. <p>
  235. <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
  236. </p>
  237. </td>
  238. <td>
  239. <p>
  240. <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
  241. </p>
  242. </td>
  243. </tr>
  244. <tr>
  245. <td>
  246. <p>
  247. </p>
  248. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">T</span> <span class="identifier">construct</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="identifier">P</span><span class="special">&amp;,</span>
  249. <span class="identifier">interval_bounds</span> <span class="special">)</span>
  250. </pre>
  251. <p>
  252. </p>
  253. </td>
  254. <td>
  255. <p>
  256. <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
  257. </p>
  258. </td>
  259. <td>
  260. <p>
  261. <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
  262. </p>
  263. </td>
  264. <td>
  265. </td>
  266. <td>
  267. </td>
  268. <td>
  269. </td>
  270. <td>
  271. </td>
  272. </tr>
  273. <tr>
  274. <td>
  275. <p>
  276. <code class="computeroutput"><span class="identifier">T</span> <span class="identifier">hull</span><span class="special">(</span><span class="keyword">const</span>
  277. <span class="identifier">P</span><span class="special">&amp;,</span>
  278. <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span></code>
  279. </p>
  280. </td>
  281. <td>
  282. <p>
  283. <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
  284. </p>
  285. </td>
  286. <td>
  287. <p>
  288. <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
  289. </p>
  290. </td>
  291. <td>
  292. <p>
  293. <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
  294. <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
  295. </p>
  296. </td>
  297. <td>
  298. <p>
  299. <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
  300. <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
  301. </p>
  302. </td>
  303. <td>
  304. <p>
  305. <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
  306. </p>
  307. </td>
  308. <td>
  309. <p>
  310. <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
  311. </p>
  312. </td>
  313. </tr>
  314. <tr>
  315. <td>
  316. <p>
  317. <code class="computeroutput"><span class="identifier">T</span> <span class="identifier">span</span><span class="special">(</span><span class="keyword">const</span>
  318. <span class="identifier">P</span><span class="special">&amp;,</span>
  319. <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;)</span></code>
  320. </p>
  321. </td>
  322. <td>
  323. <p>
  324. <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
  325. </p>
  326. </td>
  327. <td>
  328. <p>
  329. <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
  330. </p>
  331. </td>
  332. <td>
  333. <p>
  334. <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
  335. <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
  336. </p>
  337. </td>
  338. <td>
  339. <p>
  340. <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
  341. <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
  342. </p>
  343. </td>
  344. <td>
  345. <p>
  346. <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
  347. </p>
  348. </td>
  349. <td>
  350. <p>
  351. <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
  352. </p>
  353. </td>
  354. </tr>
  355. <tr>
  356. <td>
  357. <p>
  358. <code class="computeroutput"><span class="keyword">static</span> <span class="identifier">T</span>
  359. <span class="identifier">right_open</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>
  360. <span class="identifier">P</span><span class="special">&amp;)</span></code>
  361. </p>
  362. </td>
  363. <td>
  364. <p>
  365. <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
  366. </p>
  367. </td>
  368. <td>
  369. <p>
  370. <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
  371. </p>
  372. </td>
  373. <td>
  374. </td>
  375. <td>
  376. </td>
  377. <td>
  378. </td>
  379. <td>
  380. </td>
  381. </tr>
  382. <tr>
  383. <td>
  384. <p>
  385. <code class="computeroutput"><span class="keyword">static</span> <span class="identifier">T</span>
  386. <span class="identifier">left_open</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>
  387. <span class="identifier">P</span><span class="special">&amp;)</span></code>
  388. </p>
  389. </td>
  390. <td>
  391. <p>
  392. <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
  393. </p>
  394. </td>
  395. <td>
  396. <p>
  397. <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
  398. </p>
  399. </td>
  400. <td>
  401. </td>
  402. <td>
  403. </td>
  404. <td>
  405. </td>
  406. <td>
  407. </td>
  408. </tr>
  409. <tr>
  410. <td>
  411. <p>
  412. <code class="computeroutput"><span class="keyword">static</span> <span class="identifier">T</span>
  413. <span class="identifier">closed</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>
  414. <span class="identifier">P</span><span class="special">&amp;)</span></code>
  415. </p>
  416. </td>
  417. <td>
  418. <p>
  419. <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
  420. </p>
  421. </td>
  422. <td>
  423. <p>
  424. <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
  425. </p>
  426. </td>
  427. <td>
  428. </td>
  429. <td>
  430. </td>
  431. <td>
  432. </td>
  433. <td>
  434. </td>
  435. </tr>
  436. <tr>
  437. <td>
  438. <p>
  439. <code class="computeroutput"><span class="keyword">static</span> <span class="identifier">T</span>
  440. <span class="identifier">open</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>
  441. <span class="identifier">P</span><span class="special">&amp;)</span></code>
  442. </p>
  443. </td>
  444. <td>
  445. <p>
  446. <a class="link" href="../interface/function_synopsis.html#discrete_types"><span class="bold"><strong>d</strong></span></a>
  447. </p>
  448. </td>
  449. <td>
  450. <p>
  451. <a class="link" href="../interface/function_synopsis.html#continuous_types"><span class="bold"><strong>c</strong></span></a>
  452. </p>
  453. </td>
  454. <td>
  455. </td>
  456. <td>
  457. </td>
  458. <td>
  459. </td>
  460. <td>
  461. </td>
  462. </tr>
  463. </tbody>
  464. </table></div>
  465. <p>
  466. The table above shows the availability of functions, that allow the construction
  467. of intervals. All interval constructin functins are of <span class="emphasis"><em><span class="bold"><strong>constant time and space complexity</strong></span></em></span>.
  468. </p>
  469. <div class="informaltable"><table class="table">
  470. <colgroup>
  471. <col>
  472. <col>
  473. </colgroup>
  474. <thead><tr>
  475. <th>
  476. <p>
  477. <span class="emphasis"><em><span class="bold"><strong>Construct</strong></span></em></span>
  478. </p>
  479. </th>
  480. <th>
  481. <p>
  482. Description
  483. </p>
  484. </th>
  485. </tr></thead>
  486. <tbody>
  487. <tr>
  488. <td>
  489. <p>
  490. <code class="computeroutput"><span class="identifier">T</span> <span class="identifier">singleton</span><span class="special">(</span><span class="keyword">const</span>
  491. <span class="identifier">P</span><span class="special">&amp;</span>
  492. <span class="identifier">value</span><span class="special">)</span></code>
  493. </p>
  494. </td>
  495. <td>
  496. <p>
  497. Constructs an interval that contains exactly one element <code class="computeroutput"><span class="identifier">value</span></code>. For all interval types
  498. of the icl sigletons can be constructed for <span class="emphasis"><em>discrete</em></span>
  499. domain types. For continuous domain types, only <code class="computeroutput"><a class="link" href="../../boost/icl/continuous_interval.html" title="Class template continuous_interval">continuous_interval</a></code>
  500. is capable to construct a singleton.
  501. </p>
  502. </td>
  503. </tr>
  504. <tr>
  505. <td>
  506. <p>
  507. <code class="computeroutput"><span class="identifier">T</span> <span class="identifier">construct</span><span class="special">(</span><span class="keyword">const</span>
  508. <span class="identifier">P</span><span class="special">&amp;</span>
  509. <span class="identifier">lower</span><span class="special">,</span>
  510. <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;</span> <span class="identifier">upper</span><span class="special">)</span></code>
  511. </p>
  512. </td>
  513. <td>
  514. <p>
  515. Contructs an interval with lower bound <code class="computeroutput"><span class="identifier">lower</span></code>
  516. and upper bound <code class="computeroutput"><span class="identifier">upper</span></code>
  517. </p>
  518. </td>
  519. </tr>
  520. <tr>
  521. <td>
  522. <p>
  523. </p>
  524. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">T</span> <span class="identifier">construct</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;</span> <span class="identifier">lower</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;</span> <span class="identifier">upper</span><span class="special">,</span>
  525. <span class="identifier">interval_bounds</span> <span class="identifier">bounds</span>
  526. <span class="special">=</span> <span class="identifier">interval_bounds</span><span class="special">::</span><span class="identifier">right_open</span><span class="special">())</span>
  527. </pre>
  528. <p>
  529. </p>
  530. </td>
  531. <td>
  532. <p>
  533. For dynamically bounded intervals this function constructs an interval
  534. with interval bounds specified by the third parameter.
  535. </p>
  536. </td>
  537. </tr>
  538. <tr>
  539. <td>
  540. <p>
  541. <code class="computeroutput"><span class="identifier">T</span> <span class="identifier">hull</span><span class="special">(</span><span class="keyword">const</span>
  542. <span class="identifier">P</span><span class="special">&amp;</span>
  543. <span class="identifier">x1</span><span class="special">,</span>
  544. <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;</span> <span class="identifier">x2</span><span class="special">)</span></code>
  545. </p>
  546. </td>
  547. <td>
  548. <p>
  549. <code class="computeroutput"><span class="identifier">hull</span><span class="special">(</span><span class="identifier">x1</span><span class="special">,</span><span class="identifier">x2</span><span class="special">)</span></code>
  550. constructs the smallest interval that contains both <code class="computeroutput"><span class="identifier">x1</span></code> and <code class="computeroutput"><span class="identifier">x2</span></code>.
  551. <code class="computeroutput"><span class="identifier">x2</span></code> may be smaller
  552. than <code class="computeroutput"><span class="identifier">x1</span></code>.
  553. </p>
  554. </td>
  555. </tr>
  556. <tr>
  557. <td>
  558. <p>
  559. <code class="computeroutput"><span class="identifier">T</span> <span class="identifier">span</span><span class="special">(</span><span class="keyword">const</span>
  560. <span class="identifier">P</span><span class="special">&amp;</span>
  561. <span class="identifier">x1</span><span class="special">,</span>
  562. <span class="keyword">const</span> <span class="identifier">P</span><span class="special">&amp;</span> <span class="identifier">x2</span><span class="special">)</span></code>
  563. </p>
  564. </td>
  565. <td>
  566. <p>
  567. <code class="computeroutput"><span class="identifier">span</span><span class="special">(</span><span class="identifier">x1</span><span class="special">,</span><span class="identifier">x2</span><span class="special">)</span></code>
  568. constructs the interval <code class="computeroutput"><span class="identifier">construct</span><span class="special">(</span><span class="identifier">min</span><span class="special">(</span><span class="identifier">x1</span><span class="special">,</span><span class="identifier">x2</span><span class="special">),</span> <span class="identifier">max</span><span class="special">(</span><span class="identifier">x1</span><span class="special">,</span><span class="identifier">x2</span><span class="special">))</span></code>. Note the differences between
  569. <code class="computeroutput"><span class="identifier">span</span></code>, <code class="computeroutput"><span class="identifier">hull</span></code> and <code class="computeroutput"><span class="identifier">construct</span></code>:
  570. </p>
  571. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">span</span><span class="special">&lt;</span><span class="identifier">right_open_interval</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="special">&gt;(</span><span class="number">2</span><span class="special">,</span><span class="number">1</span><span class="special">)</span> <span class="special">==</span> <span class="special">[</span><span class="number">1</span><span class="special">,</span><span class="number">2</span><span class="special">)</span> <span class="comment">// does NOT contain 2</span>
  572. <span class="identifier">hull</span><span class="special">&lt;</span><span class="identifier">right_open_interval</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="special">&gt;(</span><span class="number">2</span><span class="special">,</span><span class="number">1</span><span class="special">)</span> <span class="special">==</span> <span class="special">[</span><span class="number">1</span><span class="special">,</span><span class="number">3</span><span class="special">)</span> <span class="comment">// contains 2</span>
  573. <span class="identifier">construct</span><span class="special">&lt;</span><span class="identifier">right_open_interval</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="special">&gt;(</span><span class="number">2</span><span class="special">,</span><span class="number">1</span><span class="special">)</span> <span class="special">==</span> <span class="special">[)</span> <span class="comment">// is empty</span>
  574. </pre>
  575. <p>
  576. </p>
  577. </td>
  578. </tr>
  579. <tr>
  580. <td>
  581. <p>
  582. </p>
  583. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">static</span> <span class="identifier">T</span> <span class="identifier">right_open</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="identifier">P</span><span class="special">&amp;)</span>
  584. <span class="keyword">static</span> <span class="identifier">T</span> <span class="identifier">left_open</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="identifier">P</span><span class="special">&amp;)</span>
  585. <span class="keyword">static</span> <span class="identifier">T</span> <span class="identifier">closed</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="identifier">P</span><span class="special">&amp;)</span>
  586. <span class="keyword">static</span> <span class="identifier">T</span> <span class="identifier">open</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="identifier">P</span><span class="special">&amp;)</span>
  587. </pre>
  588. <p>
  589. </p>
  590. </td>
  591. <td>
  592. <p>
  593. For dynamically bounded intervals there are for static functions
  594. to construct intervals with the four interval bound types:
  595. </p>
  596. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">discrete_interval</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">itv1</span> <span class="special">=</span> <span class="identifier">discrete_interval</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">closed</span><span class="special">(</span><span class="number">0</span><span class="special">,</span><span class="number">42</span><span class="special">);</span>
  597. <span class="identifier">continuous_interval</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">itv2</span> <span class="special">=</span> <span class="identifier">continuous_interval</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">right_open</span><span class="special">(</span><span class="number">0.0</span><span class="special">,</span> <span class="number">1.0</span><span class="special">);</span>
  598. </pre>
  599. <p>
  600. </p>
  601. </td>
  602. </tr>
  603. <tr>
  604. <td>
  605. <p>
  606. <span class="emphasis"><em><span class="bold"><strong>Using the interval default</strong></span></em></span>
  607. </p>
  608. </td>
  609. <td>
  610. </td>
  611. </tr>
  612. <tr>
  613. <td>
  614. <p>
  615. <code class="computeroutput"><span class="identifier">interval</span><span class="special">&lt;</span><span class="identifier">P</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
  616. </p>
  617. </td>
  618. <td>
  619. <p>
  620. There is a library default, for all interval containers of the
  621. <span class="bold"><strong>icl</strong></span>. The intension of the library
  622. default is to minimize the need for parameter specification, when
  623. working with <span class="bold"><strong>icl</strong></span> class templates.
  624. We can get the library default interval type as <code class="computeroutput"><span class="identifier">interval</span><span class="special">&lt;</span><span class="identifier">P</span><span class="special">&gt;::</span><span class="identifier">type</span></code>.
  625. The library default uses <span class="emphasis"><em><span class="bold"><strong>dynamically
  626. bounded intervals</strong></span></em></span>. You can switch to <span class="emphasis"><em><span class="bold"><strong>statically bounded intervals</strong></span></em></span>
  627. by <code class="computeroutput"><span class="preprocessor">#define</span> <span class="identifier">BOOST_ICL_USE_STATIC_BOUNDED_INTERVALS</span></code>
  628. prior to icl includes.
  629. </p>
  630. </td>
  631. </tr>
  632. <tr>
  633. <td>
  634. <p>
  635. </p>
  636. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">static</span> <span class="identifier">T</span> <span class="identifier">right_open</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="identifier">P</span><span class="special">&amp;)</span>
  637. <span class="keyword">static</span> <span class="identifier">T</span> <span class="identifier">left_open</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="identifier">P</span><span class="special">&amp;)</span>
  638. <span class="keyword">static</span> <span class="identifier">T</span> <span class="identifier">closed</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="identifier">P</span><span class="special">&amp;)</span>
  639. <span class="keyword">static</span> <span class="identifier">T</span> <span class="identifier">open</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="identifier">P</span><span class="special">&amp;)</span>
  640. </pre>
  641. <p>
  642. </p>
  643. </td>
  644. <td>
  645. <p>
  646. For template struct <code class="computeroutput"><span class="identifier">interval</span></code>
  647. that always uses the library default the static functions for the
  648. four interval bound types are also available.
  649. </p>
  650. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">interval</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">itv1</span> <span class="special">=</span> <span class="identifier">interval</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">closed</span><span class="special">(</span><span class="number">0</span><span class="special">,</span><span class="number">42</span><span class="special">);</span>
  651. <span class="identifier">interval</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">itv2</span> <span class="special">=</span> <span class="identifier">interval</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">right_open</span><span class="special">(</span><span class="number">0.0</span><span class="special">,</span> <span class="number">1.0</span><span class="special">);</span>
  652. </pre>
  653. <p>
  654. This works with the statically bounded intervals as well, with
  655. the restriction that for continuous domain types the matching function
  656. has to be used:
  657. </p>
  658. <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_ICL_USE_STATIC_BOUNDED_INTERVALS</span>
  659. <span class="special">.</span> <span class="special">.</span> <span class="special">.</span>
  660. <span class="comment">// library default is the statically bounded right_open_interval</span>
  661. <span class="identifier">interval</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">itv1</span> <span class="special">=</span> <span class="identifier">interval</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">closed</span><span class="special">(</span><span class="number">0</span><span class="special">,</span><span class="number">42</span><span class="special">);</span> <span class="comment">//==[0,43) //ok, bounds are shifted</span>
  662. <span class="identifier">interval</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">itv2</span> <span class="special">=</span> <span class="identifier">interval</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">right_open</span><span class="special">(</span><span class="number">0.0</span><span class="special">,</span> <span class="number">1.0</span><span class="special">);</span> <span class="comment">//ok. right_open matches</span>
  663. <span class="identifier">interval</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">itv3</span> <span class="special">=</span> <span class="identifier">interval</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">closed</span><span class="special">(</span><span class="number">0.0</span><span class="special">,</span> <span class="number">1.0</span><span class="special">);</span> <span class="comment">//will NOT compile</span>
  664. </pre>
  665. <p>
  666. See also examples <a class="link" href="../examples/dynamic_interval.html" title="Dynamic interval">Dynamic
  667. intervals</a> and <a class="link" href="../examples/static_interval.html" title="Static interval">Static
  668. intervals</a>
  669. </p>
  670. </td>
  671. </tr>
  672. </tbody>
  673. </table></div>
  674. <p>
  675. <span class="emphasis"><em><span class="bold"><strong>See also . . .</strong></span></em></span>
  676. </p>
  677. <div class="informaltable"><table class="table">
  678. <colgroup><col></colgroup>
  679. <thead><tr></tr></thead>
  680. <tbody>
  681. <tr><td>
  682. <p>
  683. <a class="link" href="../examples/dynamic_interval.html" title="Dynamic interval"><span class="emphasis"><em><span class="bold"><strong>Example: Dynamically bounded intervals and the library
  684. default</strong></span></em></span></a>
  685. </p>
  686. </td></tr>
  687. <tr><td>
  688. <p>
  689. <a class="link" href="../examples/static_interval.html" title="Static interval"><span class="emphasis"><em><span class="bold"><strong>Example: Statically bounded intervals, changing the
  690. library default</strong></span></em></span></a>
  691. </p>
  692. </td></tr>
  693. </tbody>
  694. </table></div>
  695. <p>
  696. <span class="emphasis"><em><span class="bold"><strong>Back to section . . .</strong></span></em></span>
  697. </p>
  698. <div class="informaltable"><table class="table">
  699. <colgroup><col></colgroup>
  700. <thead><tr></tr></thead>
  701. <tbody>
  702. <tr><td>
  703. <p>
  704. <a class="link" href="../interface/function_synopsis.html#additional_interval_functions"><span class="emphasis"><em><span class="bold"><strong>Additional interval functions</strong></span></em></span></a>
  705. </p>
  706. </td></tr>
  707. <tr><td>
  708. <p>
  709. <a class="link" href="../interface/function_synopsis.html#function_synopsis_table"><span class="emphasis"><em><span class="bold"><strong>Function
  710. Synopsis</strong></span></em></span></a>
  711. </p>
  712. </td></tr>
  713. <tr><td>
  714. <p>
  715. <a class="link" href="../interface.html" title="Interface"><span class="emphasis"><em><span class="bold"><strong>Interface</strong></span></em></span></a>
  716. </p>
  717. </td></tr>
  718. </tbody>
  719. </table></div>
  720. </div>
  721. <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
  722. <td align="left"></td>
  723. <td align="right"><div class="copyright-footer">Copyright &#169; 2007-2010 Joachim
  724. Faulhaber<br>Copyright &#169; 1999-2006 Cortex Software
  725. GmbH<p>
  726. Distributed under the Boost Software License, Version 1.0. (See accompanying
  727. 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>)
  728. </p>
  729. </div></td>
  730. </tr></table>
  731. <hr>
  732. <div class="spirit-nav">
  733. <a accesskey="p" href="streaming__conversion.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="additional_interval_orderings.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
  734. </div>
  735. </body>
  736. </html>