/Src/Dependencies/Boost/libs/phoenix/doc/html/phoenix/modules/stl/container.html

http://hadesmem.googlecode.com/ · HTML · 601 lines · 601 code · 0 blank · 0 comment · 0 complexity · 2d9124f066fd8485ffd5be5e556454ce MD5 · raw file

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
  4. <title>Container</title>
  5. <link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
  6. <meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
  7. <link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Phoenix 3.0">
  8. <link rel="up" href="../stl.html" title="STL">
  9. <link rel="prev" href="../stl.html" title="STL">
  10. <link rel="next" href="algorithm.html" title="Algorithm">
  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="../../../../../../../libs/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="../stl.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../stl.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="algorithm.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
  24. </div>
  25. <div class="section">
  26. <div class="titlepage"><div><div><h4 class="title">
  27. <a name="phoenix.modules.stl.container"></a><a class="link" href="container.html" title="Container">Container</a>
  28. </h4></div></div></div>
  29. <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">stl</span><span class="special">/</span><span class="identifier">container</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
  30. </pre>
  31. <p>
  32. The container module predefines a set of lazy functions that work on STL
  33. containers. These functions provide a mechanism for the lazy evaluation
  34. of the public member functions of the STL containers. The lazy functions
  35. are thin wrappers that simply forward to their respective counterparts
  36. in the STL library.
  37. </p>
  38. <p>
  39. Lazy functions are provided for all of the member functions of the following
  40. containers:
  41. </p>
  42. <div class="itemizedlist"><ul class="itemizedlist" type="disc">
  43. <li class="listitem">
  44. deque
  45. </li>
  46. <li class="listitem">
  47. list
  48. </li>
  49. <li class="listitem">
  50. map
  51. </li>
  52. <li class="listitem">
  53. multimap
  54. </li>
  55. <li class="listitem">
  56. vector
  57. </li>
  58. </ul></div>
  59. <p>
  60. Indeed, should your class have member functions with the same names and
  61. signatures as those listed below, then it will automatically be supported.
  62. To summarize, lazy functions are provided for member functions:
  63. </p>
  64. <div class="itemizedlist"><ul class="itemizedlist" type="disc">
  65. <li class="listitem">
  66. assign
  67. </li>
  68. <li class="listitem">
  69. at
  70. </li>
  71. <li class="listitem">
  72. back
  73. </li>
  74. <li class="listitem">
  75. begin
  76. </li>
  77. <li class="listitem">
  78. capacity
  79. </li>
  80. <li class="listitem">
  81. clear
  82. </li>
  83. <li class="listitem">
  84. empty
  85. </li>
  86. <li class="listitem">
  87. end
  88. </li>
  89. <li class="listitem">
  90. erase
  91. </li>
  92. <li class="listitem">
  93. front
  94. </li>
  95. <li class="listitem">
  96. get_allocator
  97. </li>
  98. <li class="listitem">
  99. insert
  100. </li>
  101. <li class="listitem">
  102. key_comp
  103. </li>
  104. <li class="listitem">
  105. max_size
  106. </li>
  107. <li class="listitem">
  108. pop_back
  109. </li>
  110. <li class="listitem">
  111. pop_front
  112. </li>
  113. <li class="listitem">
  114. push_back
  115. </li>
  116. <li class="listitem">
  117. push_front
  118. </li>
  119. <li class="listitem">
  120. rbegin
  121. </li>
  122. <li class="listitem">
  123. rend
  124. </li>
  125. <li class="listitem">
  126. reserve
  127. </li>
  128. <li class="listitem">
  129. resize
  130. </li>
  131. <li class="listitem">
  132. size
  133. </li>
  134. <li class="listitem">
  135. splice
  136. </li>
  137. <li class="listitem">
  138. value_comp
  139. </li>
  140. </ul></div>
  141. <p>
  142. The lazy functions' names are the same as the corresponding member function.
  143. The difference is that the lazy functions are free functions and therefore
  144. does not use the member "dot" syntax.
  145. </p>
  146. <div class="table">
  147. <a name="id827264"></a><p class="title"><b>Table&#160;1.4.&#160;Sample usage</b></p>
  148. <div class="table-contents"><table class="table" summary="Sample usage">
  149. <colgroup>
  150. <col>
  151. <col>
  152. </colgroup>
  153. <thead><tr>
  154. <th>
  155. <p>
  156. "Normal" version
  157. </p>
  158. </th>
  159. <th>
  160. <p>
  161. "Lazy" version
  162. </p>
  163. </th>
  164. </tr></thead>
  165. <tbody>
  166. <tr>
  167. <td>
  168. <p>
  169. <code class="computeroutput"><span class="identifier">my_vector</span><span class="special">.</span><span class="identifier">at</span><span class="special">(</span><span class="number">5</span><span class="special">)</span></code>
  170. </p>
  171. </td>
  172. <td>
  173. <p>
  174. <code class="computeroutput"><span class="identifier">at</span><span class="special">(</span><span class="identifier">arg1</span><span class="special">,</span>
  175. <span class="number">5</span><span class="special">)</span></code>
  176. </p>
  177. </td>
  178. </tr>
  179. <tr>
  180. <td>
  181. <p>
  182. <code class="computeroutput"><span class="identifier">my_list</span><span class="special">.</span><span class="identifier">size</span><span class="special">()</span></code>
  183. </p>
  184. </td>
  185. <td>
  186. <p>
  187. <code class="computeroutput"><span class="identifier">size</span><span class="special">(</span><span class="identifier">arg1</span><span class="special">)</span></code>
  188. </p>
  189. </td>
  190. </tr>
  191. <tr>
  192. <td>
  193. <p>
  194. <code class="computeroutput"><span class="identifier">my_vector1</span><span class="special">.</span><span class="identifier">swap</span><span class="special">(</span><span class="identifier">my_vector2</span><span class="special">)</span></code>
  195. </p>
  196. </td>
  197. <td>
  198. <p>
  199. <code class="computeroutput"><span class="identifier">swap</span><span class="special">(</span><span class="identifier">arg1</span><span class="special">,</span>
  200. <span class="identifier">arg2</span><span class="special">)</span></code>
  201. </p>
  202. </td>
  203. </tr>
  204. </tbody>
  205. </table></div>
  206. </div>
  207. <br class="table-break"><p>
  208. Notice that member functions with names that clash with stl algorithms
  209. are absent. This will be provided in Phoenix's algorithm module.
  210. </p>
  211. <p>
  212. No support is provided here for lazy versions of <code class="computeroutput"><span class="keyword">operator</span><span class="special">+=</span></code>, <code class="computeroutput"><span class="keyword">operator</span><span class="special">[]</span></code> etc. Such operators are not specific
  213. to STL containers and lazy versions can therefore be found in <a class="link" href="../operator.html" title="Operator">operators</a>.
  214. </p>
  215. <p>
  216. The following table describes the container functions and their semantics.
  217. </p>
  218. <div class="sidebar">
  219. <div class="titlepage"></div>
  220. <p>
  221. <span class="inlinemediaobject"><img src="../../../images/tip.png" alt="tip"></span> Arguments in brackets denote optional parameters.
  222. </p>
  223. </div>
  224. <div class="table">
  225. <a name="id827603"></a><p class="title"><b>Table&#160;1.5.&#160;Lazy STL Container Functions</b></p>
  226. <div class="table-contents"><table class="table" summary="Lazy STL Container Functions">
  227. <colgroup>
  228. <col>
  229. <col>
  230. </colgroup>
  231. <thead><tr>
  232. <th>
  233. <p>
  234. Function
  235. </p>
  236. </th>
  237. <th>
  238. <p>
  239. Semantics
  240. </p>
  241. </th>
  242. </tr></thead>
  243. <tbody>
  244. <tr>
  245. <td>
  246. <p>
  247. <code class="computeroutput"><span class="identifier">assign</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span>
  248. <span class="identifier">a</span><span class="special">[,</span>
  249. <span class="identifier">b</span><span class="special">,</span>
  250. <span class="identifier">c</span><span class="special">])</span></code>
  251. </p>
  252. </td>
  253. <td>
  254. <p>
  255. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span><span class="identifier">a</span><span class="special">[,</span>
  256. <span class="identifier">b</span><span class="special">,</span>
  257. <span class="identifier">c</span><span class="special">])</span></code>
  258. </p>
  259. </td>
  260. </tr>
  261. <tr>
  262. <td>
  263. <p>
  264. <code class="computeroutput"><span class="identifier">at</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span>
  265. <span class="identifier">i</span><span class="special">)</span></code>
  266. </p>
  267. </td>
  268. <td>
  269. <p>
  270. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">at</span><span class="special">(</span><span class="identifier">i</span><span class="special">)</span></code>
  271. </p>
  272. </td>
  273. </tr>
  274. <tr>
  275. <td>
  276. <p>
  277. <code class="computeroutput"><span class="identifier">back</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
  278. </p>
  279. </td>
  280. <td>
  281. <p>
  282. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">back</span><span class="special">()</span></code>
  283. </p>
  284. </td>
  285. </tr>
  286. <tr>
  287. <td>
  288. <p>
  289. <code class="computeroutput"><span class="identifier">begin</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
  290. </p>
  291. </td>
  292. <td>
  293. <p>
  294. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span></code>
  295. </p>
  296. </td>
  297. </tr>
  298. <tr>
  299. <td>
  300. <p>
  301. <code class="computeroutput"><span class="identifier">capacity</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
  302. </p>
  303. </td>
  304. <td>
  305. <p>
  306. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">capacity</span><span class="special">()</span></code>
  307. </p>
  308. </td>
  309. </tr>
  310. <tr>
  311. <td>
  312. <p>
  313. <code class="computeroutput"><span class="identifier">clear</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
  314. </p>
  315. </td>
  316. <td>
  317. <p>
  318. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">clear</span><span class="special">()</span></code>
  319. </p>
  320. </td>
  321. </tr>
  322. <tr>
  323. <td>
  324. <p>
  325. <code class="computeroutput"><span class="identifier">empty</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
  326. </p>
  327. </td>
  328. <td>
  329. <p>
  330. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">empty</span><span class="special">()</span></code>
  331. </p>
  332. </td>
  333. </tr>
  334. <tr>
  335. <td>
  336. <p>
  337. <code class="computeroutput"><span class="identifier">end</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
  338. </p>
  339. </td>
  340. <td>
  341. <p>
  342. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">end</span><span class="special">()</span></code>
  343. </p>
  344. </td>
  345. </tr>
  346. <tr>
  347. <td>
  348. <p>
  349. <code class="computeroutput"><span class="identifier">erase</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span>
  350. <span class="identifier">a</span><span class="special">[,</span>
  351. <span class="identifier">b</span><span class="special">])</span></code>
  352. </p>
  353. </td>
  354. <td>
  355. <p>
  356. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">erase</span><span class="special">(</span><span class="identifier">a</span><span class="special">[,</span>
  357. <span class="identifier">b</span><span class="special">])</span></code>
  358. </p>
  359. </td>
  360. </tr>
  361. <tr>
  362. <td>
  363. <p>
  364. <code class="computeroutput"><span class="identifier">front</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
  365. </p>
  366. </td>
  367. <td>
  368. <p>
  369. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">front</span><span class="special">()</span></code>
  370. </p>
  371. </td>
  372. </tr>
  373. <tr>
  374. <td>
  375. <p>
  376. <code class="computeroutput"><span class="identifier">get_allocator</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
  377. </p>
  378. </td>
  379. <td>
  380. <p>
  381. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">get_allocator</span><span class="special">()</span></code>
  382. </p>
  383. </td>
  384. </tr>
  385. <tr>
  386. <td>
  387. <p>
  388. <code class="computeroutput"><span class="identifier">insert</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span>
  389. <span class="identifier">a</span><span class="special">[,</span>
  390. <span class="identifier">b</span><span class="special">,</span>
  391. <span class="identifier">c</span><span class="special">])</span></code>
  392. </p>
  393. </td>
  394. <td>
  395. <p>
  396. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">a</span><span class="special">[,</span>
  397. <span class="identifier">b</span><span class="special">,</span>
  398. <span class="identifier">c</span><span class="special">])</span></code>
  399. </p>
  400. </td>
  401. </tr>
  402. <tr>
  403. <td>
  404. <p>
  405. <code class="computeroutput"><span class="identifier">key_comp</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
  406. </p>
  407. </td>
  408. <td>
  409. <p>
  410. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">key_comp</span><span class="special">()</span></code>
  411. </p>
  412. </td>
  413. </tr>
  414. <tr>
  415. <td>
  416. <p>
  417. <code class="computeroutput"><span class="identifier">max_size</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
  418. </p>
  419. </td>
  420. <td>
  421. <p>
  422. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">max_size</span><span class="special">()</span></code>
  423. </p>
  424. </td>
  425. </tr>
  426. <tr>
  427. <td>
  428. <p>
  429. <code class="computeroutput"><span class="identifier">pop_back</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
  430. </p>
  431. </td>
  432. <td>
  433. <p>
  434. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">pop_back</span><span class="special">()</span></code>
  435. </p>
  436. </td>
  437. </tr>
  438. <tr>
  439. <td>
  440. <p>
  441. <code class="computeroutput"><span class="identifier">pop_front</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
  442. </p>
  443. </td>
  444. <td>
  445. <p>
  446. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">pop_front</span><span class="special">()</span></code>
  447. </p>
  448. </td>
  449. </tr>
  450. <tr>
  451. <td>
  452. <p>
  453. <code class="computeroutput"><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span>
  454. <span class="identifier">d</span><span class="special">)</span></code>
  455. </p>
  456. </td>
  457. <td>
  458. <p>
  459. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">d</span><span class="special">)</span></code>
  460. </p>
  461. </td>
  462. </tr>
  463. <tr>
  464. <td>
  465. <p>
  466. <code class="computeroutput"><span class="identifier">push_front</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span>
  467. <span class="identifier">d</span><span class="special">)</span></code>
  468. </p>
  469. </td>
  470. <td>
  471. <p>
  472. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">push_front</span><span class="special">(</span><span class="identifier">d</span><span class="special">)</span></code>
  473. </p>
  474. </td>
  475. </tr>
  476. <tr>
  477. <td>
  478. <p>
  479. <code class="computeroutput"><span class="identifier">pop_front</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
  480. </p>
  481. </td>
  482. <td>
  483. <p>
  484. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">pop_front</span><span class="special">()</span></code>
  485. </p>
  486. </td>
  487. </tr>
  488. <tr>
  489. <td>
  490. <p>
  491. <code class="computeroutput"><span class="identifier">rbegin</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
  492. </p>
  493. </td>
  494. <td>
  495. <p>
  496. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">rbegin</span><span class="special">()</span></code>
  497. </p>
  498. </td>
  499. </tr>
  500. <tr>
  501. <td>
  502. <p>
  503. <code class="computeroutput"><span class="identifier">rend</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
  504. </p>
  505. </td>
  506. <td>
  507. <p>
  508. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">rend</span><span class="special">()</span></code>
  509. </p>
  510. </td>
  511. </tr>
  512. <tr>
  513. <td>
  514. <p>
  515. <code class="computeroutput"><span class="identifier">reserve</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span>
  516. <span class="identifier">n</span><span class="special">)</span></code>
  517. </p>
  518. </td>
  519. <td>
  520. <p>
  521. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">reserve</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span></code>
  522. </p>
  523. </td>
  524. </tr>
  525. <tr>
  526. <td>
  527. <p>
  528. <code class="computeroutput"><span class="identifier">resize</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span>
  529. <span class="identifier">a</span><span class="special">[,</span>
  530. <span class="identifier">b</span><span class="special">])</span></code>
  531. </p>
  532. </td>
  533. <td>
  534. <p>
  535. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">resize</span><span class="special">(</span><span class="identifier">a</span><span class="special">[,</span>
  536. <span class="identifier">b</span><span class="special">])</span></code>
  537. </p>
  538. </td>
  539. </tr>
  540. <tr>
  541. <td>
  542. <p>
  543. <code class="computeroutput"><span class="identifier">size</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
  544. </p>
  545. </td>
  546. <td>
  547. <p>
  548. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">size</span><span class="special">()</span></code>
  549. </p>
  550. </td>
  551. </tr>
  552. <tr>
  553. <td>
  554. <p>
  555. <code class="computeroutput"><span class="identifier">splice</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span>
  556. <span class="identifier">a</span><span class="special">[,</span>
  557. <span class="identifier">b</span><span class="special">,</span>
  558. <span class="identifier">c</span><span class="special">,</span>
  559. <span class="identifier">d</span><span class="special">])</span></code>
  560. </p>
  561. </td>
  562. <td>
  563. <p>
  564. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">splice</span><span class="special">(</span><span class="identifier">a</span><span class="special">[,</span>
  565. <span class="identifier">b</span><span class="special">,</span>
  566. <span class="identifier">c</span><span class="special">,</span>
  567. <span class="identifier">d</span><span class="special">])</span></code>
  568. </p>
  569. </td>
  570. </tr>
  571. <tr>
  572. <td>
  573. <p>
  574. <code class="computeroutput"><span class="identifier">value_comp</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
  575. </p>
  576. </td>
  577. <td>
  578. <p>
  579. <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">value_comp</span><span class="special">()</span></code>
  580. </p>
  581. </td>
  582. </tr>
  583. </tbody>
  584. </table></div>
  585. </div>
  586. <br class="table-break">
  587. </div>
  588. <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
  589. <td align="left"></td>
  590. <td align="right"><div class="copyright-footer">Copyright &#169; 2002-2005, 2010 Joel de Guzman, Dan Marsden, Thomas Heller<p>
  591. Distributed under the Boost Software License, Version 1.0. (See accompanying
  592. 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>)
  593. </p>
  594. </div></td>
  595. </tr></table>
  596. <hr>
  597. <div class="spirit-nav">
  598. <a accesskey="p" href="../stl.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../stl.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="algorithm.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
  599. </div>
  600. </body>
  601. </html>