You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

785 lines
60 KiB

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
  5. <meta http-equiv="X-UA-Compatible" content="IE=9"/>
  6. <meta name="generator" content="Doxygen 1.8.4"/>
  7. <title>tbb::interface5::concurrent_hash_map&lt; Key, T, HashCompare, A &gt; Class Template Reference</title>
  8. <link href="tabs.css" rel="stylesheet" type="text/css"/>
  9. <script type="text/javascript" src="jquery.js"></script>
  10. <script type="text/javascript" src="dynsections.js"></script>
  11. <link href="doxygen.css" rel="stylesheet" type="text/css" />
  12. </head>
  13. <body>
  14. <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
  15. <!-- end header part -->
  16. <!-- Generated by Doxygen 1.8.4 -->
  17. <div id="navrow1" class="tabs">
  18. <ul class="tablist">
  19. <li><a href="index.html"><span>Main&#160;Page</span></a></li>
  20. <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
  21. <li><a href="modules.html"><span>Modules</span></a></li>
  22. <li><a href="namespaces.html"><span>Namespaces</span></a></li>
  23. <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
  24. <li><a href="files.html"><span>Files</span></a></li>
  25. </ul>
  26. </div>
  27. <div id="navrow2" class="tabs2">
  28. <ul class="tablist">
  29. <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
  30. <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
  31. <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
  32. </ul>
  33. </div>
  34. <div id="nav-path" class="navpath">
  35. <ul>
  36. <li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00035.html">concurrent_hash_map</a></li> </ul>
  37. </div>
  38. </div><!-- top -->
  39. <div class="header">
  40. <div class="summary">
  41. <a href="#nested-classes">Classes</a> &#124;
  42. <a href="#pub-types">Public Types</a> &#124;
  43. <a href="#pub-methods">Public Member Functions</a> &#124;
  44. <a href="#pro-types">Protected Types</a> &#124;
  45. <a href="#pro-methods">Protected Member Functions</a> &#124;
  46. <a href="#pro-attribs">Protected Attributes</a> &#124;
  47. <a href="#friends">Friends</a> &#124;
  48. <a href="a00334.html">List of all members</a> </div>
  49. <div class="headertitle">
  50. <div class="title">tbb::interface5::concurrent_hash_map&lt; Key, T, HashCompare, A &gt; Class Template Reference<div class="ingroups"><a class="el" href="a00235.html">Containers</a></div></div> </div>
  51. </div><!--header-->
  52. <div class="contents">
  53. <p>Unordered map from Key to T.
  54. <a href="a00035.html#details">More...</a></p>
  55. <p><code>#include &lt;concurrent_hash_map.h&gt;</code></p>
  56. <div class="dynheader">
  57. Inheritance diagram for tbb::interface5::concurrent_hash_map&lt; Key, T, HashCompare, A &gt;:</div>
  58. <div class="dyncontent">
  59. <div class="center">
  60. <img src="a00035.png" usemap="#tbb::interface5::concurrent_hash_map&lt; Key, T, HashCompare, A &gt;_map" alt=""/>
  61. <map id="tbb::interface5::concurrent_hash_map&lt; Key, T, HashCompare, A &gt;_map" name="tbb::interface5::concurrent_hash_map&lt; Key, T, HashCompare, A &gt;_map">
  62. </map>
  63. </div></div>
  64. <table class="memberdecls">
  65. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
  66. Classes</h2></td></tr>
  67. <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00010.html">accessor</a></td></tr>
  68. <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allows write access to elements and combines data access, locking, and garbage collection. <a href="a00010.html#details">More...</a><br/></td></tr>
  69. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  70. <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html">bucket_accessor</a></td></tr>
  71. <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">bucket accessor is to find, rehash, acquire a lock, and access a bucket <a href="a00026.html#details">More...</a><br/></td></tr>
  72. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  73. <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00047.html">const_accessor</a></td></tr>
  74. <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Combines data access, locking, and garbage collection. <a href="a00047.html#details">More...</a><br/></td></tr>
  75. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  76. <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00082.html">node</a></td></tr>
  77. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  78. </table><table class="memberdecls">
  79. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
  80. Public Types</h2></td></tr>
  81. <tr class="memitem:a73476eabf0605a4a17e33eca379b567c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a73476eabf0605a4a17e33eca379b567c"></a>
  82. typedef Key&#160;</td><td class="memItemRight" valign="bottom"><b>key_type</b></td></tr>
  83. <tr class="separator:a73476eabf0605a4a17e33eca379b567c"><td class="memSeparator" colspan="2">&#160;</td></tr>
  84. <tr class="memitem:a09f82b7e1255cd4a7ab13f694f04e0a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a09f82b7e1255cd4a7ab13f694f04e0a2"></a>
  85. typedef T&#160;</td><td class="memItemRight" valign="bottom"><b>mapped_type</b></td></tr>
  86. <tr class="separator:a09f82b7e1255cd4a7ab13f694f04e0a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
  87. <tr class="memitem:a10da770ec791fd8f3bddbf19d852b2f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a10da770ec791fd8f3bddbf19d852b2f6"></a>
  88. typedef std::pair&lt; const Key, T &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
  89. <tr class="separator:a10da770ec791fd8f3bddbf19d852b2f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
  90. <tr class="memitem:a4346b898af1007960c70b1d5a12b3dda"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4346b898af1007960c70b1d5a12b3dda"></a>
  91. typedef hash_map_base::size_type&#160;</td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
  92. <tr class="separator:a4346b898af1007960c70b1d5a12b3dda"><td class="memSeparator" colspan="2">&#160;</td></tr>
  93. <tr class="memitem:aae6344f41fc1b2aae8b310442f609db0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aae6344f41fc1b2aae8b310442f609db0"></a>
  94. typedef ptrdiff_t&#160;</td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
  95. <tr class="separator:aae6344f41fc1b2aae8b310442f609db0"><td class="memSeparator" colspan="2">&#160;</td></tr>
  96. <tr class="memitem:af8fca882f67e98d54a675c9b75db3cc0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8fca882f67e98d54a675c9b75db3cc0"></a>
  97. typedef value_type *&#160;</td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
  98. <tr class="separator:af8fca882f67e98d54a675c9b75db3cc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
  99. <tr class="memitem:acaf14214618545aa7e0aa59a3af4a6bd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acaf14214618545aa7e0aa59a3af4a6bd"></a>
  100. typedef const value_type *&#160;</td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
  101. <tr class="separator:acaf14214618545aa7e0aa59a3af4a6bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
  102. <tr class="memitem:a5064777ff7c17e294d74ca60f96f28db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5064777ff7c17e294d74ca60f96f28db"></a>
  103. typedef value_type &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
  104. <tr class="separator:a5064777ff7c17e294d74ca60f96f28db"><td class="memSeparator" colspan="2">&#160;</td></tr>
  105. <tr class="memitem:a6291ee6059597aac8f59dc8fd5558036"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6291ee6059597aac8f59dc8fd5558036"></a>
  106. typedef const value_type &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
  107. <tr class="separator:a6291ee6059597aac8f59dc8fd5558036"><td class="memSeparator" colspan="2">&#160;</td></tr>
  108. <tr class="memitem:ae6af7bf91f1cbd859aef1ffc6197b41a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6af7bf91f1cbd859aef1ffc6197b41a"></a>
  109. typedef <br class="typebreak"/>
  110. internal::hash_map_iterator<br class="typebreak"/>
  111. &lt; <a class="el" href="a00035.html">concurrent_hash_map</a>, <br class="typebreak"/>
  112. value_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
  113. <tr class="separator:ae6af7bf91f1cbd859aef1ffc6197b41a"><td class="memSeparator" colspan="2">&#160;</td></tr>
  114. <tr class="memitem:af416067eaf691c88e6b73bf3b3323f66"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af416067eaf691c88e6b73bf3b3323f66"></a>
  115. typedef <br class="typebreak"/>
  116. internal::hash_map_iterator<br class="typebreak"/>
  117. &lt; <a class="el" href="a00035.html">concurrent_hash_map</a>, const <br class="typebreak"/>
  118. value_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
  119. <tr class="separator:af416067eaf691c88e6b73bf3b3323f66"><td class="memSeparator" colspan="2">&#160;</td></tr>
  120. <tr class="memitem:a69508e67134dd5282b89e1847e71c31b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69508e67134dd5282b89e1847e71c31b"></a>
  121. typedef <br class="typebreak"/>
  122. internal::hash_map_range<br class="typebreak"/>
  123. &lt; iterator &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>range_type</b></td></tr>
  124. <tr class="separator:a69508e67134dd5282b89e1847e71c31b"><td class="memSeparator" colspan="2">&#160;</td></tr>
  125. <tr class="memitem:a0b9d06751969eacda84b01582e4aa1d2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0b9d06751969eacda84b01582e4aa1d2"></a>
  126. typedef <br class="typebreak"/>
  127. internal::hash_map_range<br class="typebreak"/>
  128. &lt; const_iterator &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>const_range_type</b></td></tr>
  129. <tr class="separator:a0b9d06751969eacda84b01582e4aa1d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
  130. <tr class="memitem:a85c266c1560f7faa64772d349d0280a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a85c266c1560f7faa64772d349d0280a4"></a>
  131. typedef Allocator&#160;</td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
  132. <tr class="separator:a85c266c1560f7faa64772d349d0280a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
  133. </table><table class="memberdecls">
  134. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
  135. Public Member Functions</h2></td></tr>
  136. <tr class="memitem:aa3a9767b525144a2afb69ed125714c53"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa3a9767b525144a2afb69ed125714c53"></a>
  137. &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#aa3a9767b525144a2afb69ed125714c53">concurrent_hash_map</a> (const allocator_type &amp;a=allocator_type())</td></tr>
  138. <tr class="memdesc:aa3a9767b525144a2afb69ed125714c53"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct empty table. <br/></td></tr>
  139. <tr class="separator:aa3a9767b525144a2afb69ed125714c53"><td class="memSeparator" colspan="2">&#160;</td></tr>
  140. <tr class="memitem:aae76e1252b56b107685f8746e0f6a1f4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aae76e1252b56b107685f8746e0f6a1f4"></a>
  141. &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#aae76e1252b56b107685f8746e0f6a1f4">concurrent_hash_map</a> (size_type n, const allocator_type &amp;a=allocator_type())</td></tr>
  142. <tr class="memdesc:aae76e1252b56b107685f8746e0f6a1f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct empty table with n preallocated buckets. This number serves also as initial concurrency level. <br/></td></tr>
  143. <tr class="separator:aae76e1252b56b107685f8746e0f6a1f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
  144. <tr class="memitem:a8a73b86f9a5e9836b38713e56c546654"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8a73b86f9a5e9836b38713e56c546654"></a>
  145. &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a8a73b86f9a5e9836b38713e56c546654">concurrent_hash_map</a> (const <a class="el" href="a00035.html">concurrent_hash_map</a> &amp;table, const allocator_type &amp;a=allocator_type())</td></tr>
  146. <tr class="memdesc:a8a73b86f9a5e9836b38713e56c546654"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor. <br/></td></tr>
  147. <tr class="separator:a8a73b86f9a5e9836b38713e56c546654"><td class="memSeparator" colspan="2">&#160;</td></tr>
  148. <tr class="memitem:ad56fc19d656099d49051f3c363cefc89"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad56fc19d656099d49051f3c363cefc89"></a>
  149. template&lt;typename I &gt; </td></tr>
  150. <tr class="memitem:ad56fc19d656099d49051f3c363cefc89"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00035.html#ad56fc19d656099d49051f3c363cefc89">concurrent_hash_map</a> (I first, I last, const allocator_type &amp;a=allocator_type())</td></tr>
  151. <tr class="memdesc:ad56fc19d656099d49051f3c363cefc89"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construction with copying iteration range and given allocator instance. <br/></td></tr>
  152. <tr class="separator:ad56fc19d656099d49051f3c363cefc89"><td class="memSeparator" colspan="2">&#160;</td></tr>
  153. <tr class="memitem:a1b9c93b6e5f3d7b52289846ecf9701d2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1b9c93b6e5f3d7b52289846ecf9701d2"></a>
  154. &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a1b9c93b6e5f3d7b52289846ecf9701d2">concurrent_hash_map</a> (const std::initializer_list&lt; value_type &gt; &amp;il, const allocator_type &amp;a=allocator_type())</td></tr>
  155. <tr class="memdesc:a1b9c93b6e5f3d7b52289846ecf9701d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct empty table with n preallocated buckets. This number serves also as initial concurrency level. <br/></td></tr>
  156. <tr class="separator:a1b9c93b6e5f3d7b52289846ecf9701d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
  157. <tr class="memitem:a63e01b1f79c287ae0257ccfd483fd90a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63e01b1f79c287ae0257ccfd483fd90a"></a>
  158. <a class="el" href="a00035.html">concurrent_hash_map</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a63e01b1f79c287ae0257ccfd483fd90a">operator=</a> (const <a class="el" href="a00035.html">concurrent_hash_map</a> &amp;table)</td></tr>
  159. <tr class="memdesc:a63e01b1f79c287ae0257ccfd483fd90a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assignment. <br/></td></tr>
  160. <tr class="separator:a63e01b1f79c287ae0257ccfd483fd90a"><td class="memSeparator" colspan="2">&#160;</td></tr>
  161. <tr class="memitem:a49e4e3979b46669a4712e7d3208e75f2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49e4e3979b46669a4712e7d3208e75f2"></a>
  162. <a class="el" href="a00035.html">concurrent_hash_map</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a49e4e3979b46669a4712e7d3208e75f2">operator=</a> (const std::initializer_list&lt; value_type &gt; &amp;il)</td></tr>
  163. <tr class="memdesc:a49e4e3979b46669a4712e7d3208e75f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assignment. <br/></td></tr>
  164. <tr class="separator:a49e4e3979b46669a4712e7d3208e75f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
  165. <tr class="memitem:adf1fa9470c605731063e5949f0418eb7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#adf1fa9470c605731063e5949f0418eb7">rehash</a> (size_type n=0)</td></tr>
  166. <tr class="memdesc:adf1fa9470c605731063e5949f0418eb7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Rehashes and optionally resizes the whole table. <a href="#adf1fa9470c605731063e5949f0418eb7">More...</a><br/></td></tr>
  167. <tr class="separator:adf1fa9470c605731063e5949f0418eb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
  168. <tr class="memitem:ab8295bc260b5e4df883fef11574b84c6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab8295bc260b5e4df883fef11574b84c6"></a>
  169. void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#ab8295bc260b5e4df883fef11574b84c6">clear</a> ()</td></tr>
  170. <tr class="memdesc:ab8295bc260b5e4df883fef11574b84c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear table. <br/></td></tr>
  171. <tr class="separator:ab8295bc260b5e4df883fef11574b84c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
  172. <tr class="memitem:a9ce9ab8c954bf6979c2c57d10fd8a8ed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9ce9ab8c954bf6979c2c57d10fd8a8ed"></a>
  173. &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a9ce9ab8c954bf6979c2c57d10fd8a8ed">~concurrent_hash_map</a> ()</td></tr>
  174. <tr class="memdesc:a9ce9ab8c954bf6979c2c57d10fd8a8ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear table and destroy it. <br/></td></tr>
  175. <tr class="separator:a9ce9ab8c954bf6979c2c57d10fd8a8ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
  176. <tr class="memitem:a10dc8d8b91878b211c12a3e6b1bb38bb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a10dc8d8b91878b211c12a3e6b1bb38bb"></a>
  177. range_type&#160;</td><td class="memItemRight" valign="bottom"><b>range</b> (size_type grainsize=1)</td></tr>
  178. <tr class="separator:a10dc8d8b91878b211c12a3e6b1bb38bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
  179. <tr class="memitem:a8698274a4ffb94bb0468c387ffdc2e56"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8698274a4ffb94bb0468c387ffdc2e56"></a>
  180. const_range_type&#160;</td><td class="memItemRight" valign="bottom"><b>range</b> (size_type grainsize=1) const </td></tr>
  181. <tr class="separator:a8698274a4ffb94bb0468c387ffdc2e56"><td class="memSeparator" colspan="2">&#160;</td></tr>
  182. <tr class="memitem:a38b7d6443502ee9f4c2374d34ea8d742"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a38b7d6443502ee9f4c2374d34ea8d742"></a>
  183. iterator&#160;</td><td class="memItemRight" valign="bottom"><b>begin</b> ()</td></tr>
  184. <tr class="separator:a38b7d6443502ee9f4c2374d34ea8d742"><td class="memSeparator" colspan="2">&#160;</td></tr>
  185. <tr class="memitem:afa85633d3fc7494f49728b4064db59f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa85633d3fc7494f49728b4064db59f6"></a>
  186. iterator&#160;</td><td class="memItemRight" valign="bottom"><b>end</b> ()</td></tr>
  187. <tr class="separator:afa85633d3fc7494f49728b4064db59f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
  188. <tr class="memitem:a46aa6dc98653a88d410d0cfddd514f0d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46aa6dc98653a88d410d0cfddd514f0d"></a>
  189. const_iterator&#160;</td><td class="memItemRight" valign="bottom"><b>begin</b> () const </td></tr>
  190. <tr class="separator:a46aa6dc98653a88d410d0cfddd514f0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
  191. <tr class="memitem:a0ed8cd11a3a5c400d9bc11492d136dfd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0ed8cd11a3a5c400d9bc11492d136dfd"></a>
  192. const_iterator&#160;</td><td class="memItemRight" valign="bottom"><b>end</b> () const </td></tr>
  193. <tr class="separator:a0ed8cd11a3a5c400d9bc11492d136dfd"><td class="memSeparator" colspan="2">&#160;</td></tr>
  194. <tr class="memitem:a01a1c3032bb193a5c4f37425adbe306c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a01a1c3032bb193a5c4f37425adbe306c"></a>
  195. std::pair&lt; iterator, iterator &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>equal_range</b> (const Key &amp;key)</td></tr>
  196. <tr class="separator:a01a1c3032bb193a5c4f37425adbe306c"><td class="memSeparator" colspan="2">&#160;</td></tr>
  197. <tr class="memitem:af368c8d8f49a9a74706c9ed11f8fd7e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af368c8d8f49a9a74706c9ed11f8fd7e4"></a>
  198. std::pair&lt; const_iterator, <br class="typebreak"/>
  199. const_iterator &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>equal_range</b> (const Key &amp;key) const </td></tr>
  200. <tr class="separator:af368c8d8f49a9a74706c9ed11f8fd7e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
  201. <tr class="memitem:ad2ce6da7cd62bc7425f0a29498332ab4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad2ce6da7cd62bc7425f0a29498332ab4"></a>
  202. size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#ad2ce6da7cd62bc7425f0a29498332ab4">size</a> () const </td></tr>
  203. <tr class="memdesc:ad2ce6da7cd62bc7425f0a29498332ab4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of items in table. <br/></td></tr>
  204. <tr class="separator:ad2ce6da7cd62bc7425f0a29498332ab4"><td class="memSeparator" colspan="2">&#160;</td></tr>
  205. <tr class="memitem:a5e05f2a1ca3accfb4252d7ee82d1e990"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e05f2a1ca3accfb4252d7ee82d1e990"></a>
  206. bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a5e05f2a1ca3accfb4252d7ee82d1e990">empty</a> () const </td></tr>
  207. <tr class="memdesc:a5e05f2a1ca3accfb4252d7ee82d1e990"><td class="mdescLeft">&#160;</td><td class="mdescRight">True if <a class="el" href="a00035.html#ad2ce6da7cd62bc7425f0a29498332ab4" title="Number of items in table. ">size()</a>==0. <br/></td></tr>
  208. <tr class="separator:a5e05f2a1ca3accfb4252d7ee82d1e990"><td class="memSeparator" colspan="2">&#160;</td></tr>
  209. <tr class="memitem:aea0a0e5220a0dcb67da57d0280d36005"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aea0a0e5220a0dcb67da57d0280d36005"></a>
  210. size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#aea0a0e5220a0dcb67da57d0280d36005">max_size</a> () const </td></tr>
  211. <tr class="memdesc:aea0a0e5220a0dcb67da57d0280d36005"><td class="mdescLeft">&#160;</td><td class="mdescRight">Upper bound on size. <br/></td></tr>
  212. <tr class="separator:aea0a0e5220a0dcb67da57d0280d36005"><td class="memSeparator" colspan="2">&#160;</td></tr>
  213. <tr class="memitem:aa067a2a4db1d96f38555369a89deee64"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa067a2a4db1d96f38555369a89deee64"></a>
  214. size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#aa067a2a4db1d96f38555369a89deee64">bucket_count</a> () const </td></tr>
  215. <tr class="memdesc:aa067a2a4db1d96f38555369a89deee64"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current number of buckets. <br/></td></tr>
  216. <tr class="separator:aa067a2a4db1d96f38555369a89deee64"><td class="memSeparator" colspan="2">&#160;</td></tr>
  217. <tr class="memitem:a121865c574f8ae5cae69ed3d6b7e0511"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a121865c574f8ae5cae69ed3d6b7e0511"></a>
  218. allocator_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a121865c574f8ae5cae69ed3d6b7e0511">get_allocator</a> () const </td></tr>
  219. <tr class="memdesc:a121865c574f8ae5cae69ed3d6b7e0511"><td class="mdescLeft">&#160;</td><td class="mdescRight">return allocator object <br/></td></tr>
  220. <tr class="separator:a121865c574f8ae5cae69ed3d6b7e0511"><td class="memSeparator" colspan="2">&#160;</td></tr>
  221. <tr class="memitem:a4c8edf603bc776a6c84c007702c1808e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c8edf603bc776a6c84c007702c1808e"></a>
  222. void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a4c8edf603bc776a6c84c007702c1808e">swap</a> (<a class="el" href="a00035.html">concurrent_hash_map</a> &amp;table)</td></tr>
  223. <tr class="memdesc:a4c8edf603bc776a6c84c007702c1808e"><td class="mdescLeft">&#160;</td><td class="mdescRight">swap two instances. Iterators are invalidated <br/></td></tr>
  224. <tr class="separator:a4c8edf603bc776a6c84c007702c1808e"><td class="memSeparator" colspan="2">&#160;</td></tr>
  225. <tr class="memitem:ac375d3884bf9c80efe56117757c822e7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac375d3884bf9c80efe56117757c822e7"></a>
  226. size_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#ac375d3884bf9c80efe56117757c822e7">count</a> (const Key &amp;key) const </td></tr>
  227. <tr class="memdesc:ac375d3884bf9c80efe56117757c822e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return count of items (0 or 1) <br/></td></tr>
  228. <tr class="separator:ac375d3884bf9c80efe56117757c822e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
  229. <tr class="memitem:a27a3f296dc170ae25f8e3fd9efa93cff"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a27a3f296dc170ae25f8e3fd9efa93cff">find</a> (<a class="el" href="a00047.html">const_accessor</a> &amp;result, const Key &amp;key) const </td></tr>
  230. <tr class="memdesc:a27a3f296dc170ae25f8e3fd9efa93cff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find item and acquire a read lock on the item. <a href="#a27a3f296dc170ae25f8e3fd9efa93cff">More...</a><br/></td></tr>
  231. <tr class="separator:a27a3f296dc170ae25f8e3fd9efa93cff"><td class="memSeparator" colspan="2">&#160;</td></tr>
  232. <tr class="memitem:a6b61799e2018381b5ee4b78752a41483"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a6b61799e2018381b5ee4b78752a41483">find</a> (<a class="el" href="a00010.html">accessor</a> &amp;result, const Key &amp;key)</td></tr>
  233. <tr class="memdesc:a6b61799e2018381b5ee4b78752a41483"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find item and acquire a write lock on the item. <a href="#a6b61799e2018381b5ee4b78752a41483">More...</a><br/></td></tr>
  234. <tr class="separator:a6b61799e2018381b5ee4b78752a41483"><td class="memSeparator" colspan="2">&#160;</td></tr>
  235. <tr class="memitem:aaebb10a9e9dcb24e63860caa745a281d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#aaebb10a9e9dcb24e63860caa745a281d">insert</a> (<a class="el" href="a00047.html">const_accessor</a> &amp;result, const Key &amp;key)</td></tr>
  236. <tr class="memdesc:aaebb10a9e9dcb24e63860caa745a281d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Insert item (if not already present) and acquire a read lock on the item. <a href="#aaebb10a9e9dcb24e63860caa745a281d">More...</a><br/></td></tr>
  237. <tr class="separator:aaebb10a9e9dcb24e63860caa745a281d"><td class="memSeparator" colspan="2">&#160;</td></tr>
  238. <tr class="memitem:a766c6033c203e8f342501d85a7cf3405"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a766c6033c203e8f342501d85a7cf3405">insert</a> (<a class="el" href="a00010.html">accessor</a> &amp;result, const Key &amp;key)</td></tr>
  239. <tr class="memdesc:a766c6033c203e8f342501d85a7cf3405"><td class="mdescLeft">&#160;</td><td class="mdescRight">Insert item (if not already present) and acquire a write lock on the item. <a href="#a766c6033c203e8f342501d85a7cf3405">More...</a><br/></td></tr>
  240. <tr class="separator:a766c6033c203e8f342501d85a7cf3405"><td class="memSeparator" colspan="2">&#160;</td></tr>
  241. <tr class="memitem:ae0b420cdb752e749790c8a7daa15c3c2"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#ae0b420cdb752e749790c8a7daa15c3c2">insert</a> (<a class="el" href="a00047.html">const_accessor</a> &amp;result, const value_type &amp;value)</td></tr>
  242. <tr class="memdesc:ae0b420cdb752e749790c8a7daa15c3c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Insert item by copying if there is no such key present already and acquire a read lock on the item. <a href="#ae0b420cdb752e749790c8a7daa15c3c2">More...</a><br/></td></tr>
  243. <tr class="separator:ae0b420cdb752e749790c8a7daa15c3c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
  244. <tr class="memitem:a2047214e041b7674c3b83e204d0d6c6a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a2047214e041b7674c3b83e204d0d6c6a">insert</a> (<a class="el" href="a00010.html">accessor</a> &amp;result, const value_type &amp;value)</td></tr>
  245. <tr class="memdesc:a2047214e041b7674c3b83e204d0d6c6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Insert item by copying if there is no such key present already and acquire a write lock on the item. <a href="#a2047214e041b7674c3b83e204d0d6c6a">More...</a><br/></td></tr>
  246. <tr class="separator:a2047214e041b7674c3b83e204d0d6c6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
  247. <tr class="memitem:a8e39501f9edb3210504c9c4ca05384b7"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a8e39501f9edb3210504c9c4ca05384b7">insert</a> (const value_type &amp;value)</td></tr>
  248. <tr class="memdesc:a8e39501f9edb3210504c9c4ca05384b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Insert item by copying if there is no such key present already. <a href="#a8e39501f9edb3210504c9c4ca05384b7">More...</a><br/></td></tr>
  249. <tr class="separator:a8e39501f9edb3210504c9c4ca05384b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
  250. <tr class="memitem:ab84dfd77316252cbf39c7ae89e365a00"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab84dfd77316252cbf39c7ae89e365a00"></a>
  251. template&lt;typename I &gt; </td></tr>
  252. <tr class="memitem:ab84dfd77316252cbf39c7ae89e365a00"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00035.html#ab84dfd77316252cbf39c7ae89e365a00">insert</a> (I first, I last)</td></tr>
  253. <tr class="memdesc:ab84dfd77316252cbf39c7ae89e365a00"><td class="mdescLeft">&#160;</td><td class="mdescRight">Insert range [first, last) <br/></td></tr>
  254. <tr class="separator:ab84dfd77316252cbf39c7ae89e365a00"><td class="memSeparator" colspan="2">&#160;</td></tr>
  255. <tr class="memitem:a5144122dbb946d933b94a92117543b33"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a5144122dbb946d933b94a92117543b33">erase</a> (const Key &amp;key)</td></tr>
  256. <tr class="memdesc:a5144122dbb946d933b94a92117543b33"><td class="mdescLeft">&#160;</td><td class="mdescRight">Erase item. <a href="#a5144122dbb946d933b94a92117543b33">More...</a><br/></td></tr>
  257. <tr class="separator:a5144122dbb946d933b94a92117543b33"><td class="memSeparator" colspan="2">&#160;</td></tr>
  258. <tr class="memitem:a2ec6f95ed9beda9d32df56cdd45c1842"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a2ec6f95ed9beda9d32df56cdd45c1842">erase</a> (<a class="el" href="a00047.html">const_accessor</a> &amp;item_accessor)</td></tr>
  259. <tr class="memdesc:a2ec6f95ed9beda9d32df56cdd45c1842"><td class="mdescLeft">&#160;</td><td class="mdescRight">Erase item by <a class="el" href="a00047.html" title="Combines data access, locking, and garbage collection. ">const_accessor</a>. <a href="#a2ec6f95ed9beda9d32df56cdd45c1842">More...</a><br/></td></tr>
  260. <tr class="separator:a2ec6f95ed9beda9d32df56cdd45c1842"><td class="memSeparator" colspan="2">&#160;</td></tr>
  261. <tr class="memitem:a3ed0fbcc6cfd4db8242e100355ac1fa5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a3ed0fbcc6cfd4db8242e100355ac1fa5">erase</a> (<a class="el" href="a00010.html">accessor</a> &amp;item_accessor)</td></tr>
  262. <tr class="memdesc:a3ed0fbcc6cfd4db8242e100355ac1fa5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Erase item by accessor. <a href="#a3ed0fbcc6cfd4db8242e100355ac1fa5">More...</a><br/></td></tr>
  263. <tr class="separator:a3ed0fbcc6cfd4db8242e100355ac1fa5"><td class="memSeparator" colspan="2">&#160;</td></tr>
  264. </table><table class="memberdecls">
  265. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
  266. Protected Types</h2></td></tr>
  267. <tr class="memitem:a81dddc5d509f7f074d84d9c38e83efb9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a81dddc5d509f7f074d84d9c38e83efb9"></a>
  268. typedef Allocator::template <br class="typebreak"/>
  269. rebind&lt; <a class="el" href="a00082.html">node</a> &gt;::other&#160;</td><td class="memItemRight" valign="bottom"><b>node_allocator_type</b></td></tr>
  270. <tr class="separator:a81dddc5d509f7f074d84d9c38e83efb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
  271. </table><table class="memberdecls">
  272. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
  273. Protected Member Functions</h2></td></tr>
  274. <tr class="memitem:aed0e0def29516d9ee7aab2192727b69b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed0e0def29516d9ee7aab2192727b69b"></a>
  275. void&#160;</td><td class="memItemRight" valign="bottom"><b>delete_node</b> (node_base *n)</td></tr>
  276. <tr class="separator:aed0e0def29516d9ee7aab2192727b69b"><td class="memSeparator" colspan="2">&#160;</td></tr>
  277. <tr class="memitem:ae44a70417f9674a2169f9a1fd437a3bd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae44a70417f9674a2169f9a1fd437a3bd"></a>
  278. <a class="el" href="a00082.html">node</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>search_bucket</b> (const key_type &amp;key, bucket *b) const </td></tr>
  279. <tr class="separator:ae44a70417f9674a2169f9a1fd437a3bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
  280. <tr class="memitem:a1b57e036f82bc2b1ef1ede41b02d46b5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1b57e036f82bc2b1ef1ede41b02d46b5"></a>
  281. void&#160;</td><td class="memItemRight" valign="bottom"><b>rehash_bucket</b> (bucket *b_new, const hashcode_t h)</td></tr>
  282. <tr class="separator:a1b57e036f82bc2b1ef1ede41b02d46b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
  283. <tr class="memitem:a0435730c6b9dbbe2937fb38b9403147c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0435730c6b9dbbe2937fb38b9403147c"></a>
  284. bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a0435730c6b9dbbe2937fb38b9403147c">lookup</a> (bool op_insert, const Key &amp;key, const T *t, <a class="el" href="a00047.html">const_accessor</a> *result, bool write)</td></tr>
  285. <tr class="memdesc:a0435730c6b9dbbe2937fb38b9403147c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Insert or find item and optionally acquire a lock on the item. <br/></td></tr>
  286. <tr class="separator:a0435730c6b9dbbe2937fb38b9403147c"><td class="memSeparator" colspan="2">&#160;</td></tr>
  287. <tr class="memitem:a6fec452b31b8f0e185dc2de64b7128b2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6fec452b31b8f0e185dc2de64b7128b2"></a>
  288. bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a6fec452b31b8f0e185dc2de64b7128b2">exclude</a> (<a class="el" href="a00047.html">const_accessor</a> &amp;item_accessor)</td></tr>
  289. <tr class="memdesc:a6fec452b31b8f0e185dc2de64b7128b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">delete item by accessor <br/></td></tr>
  290. <tr class="separator:a6fec452b31b8f0e185dc2de64b7128b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
  291. <tr class="memitem:a8603f5288db63ec35a16844427e97e42"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8603f5288db63ec35a16844427e97e42"></a>
  292. template&lt;typename I &gt; </td></tr>
  293. <tr class="memitem:a8603f5288db63ec35a16844427e97e42"><td class="memTemplItemLeft" align="right" valign="top">std::pair&lt; I, I &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00035.html#a8603f5288db63ec35a16844427e97e42">internal_equal_range</a> (const Key &amp;key, I end) const </td></tr>
  294. <tr class="memdesc:a8603f5288db63ec35a16844427e97e42"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an iterator for an item defined by the key, or for the next item after it (if upper==true) <br/></td></tr>
  295. <tr class="separator:a8603f5288db63ec35a16844427e97e42"><td class="memSeparator" colspan="2">&#160;</td></tr>
  296. <tr class="memitem:a0bc3593f82b3b4f9839fc051780212ab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0bc3593f82b3b4f9839fc051780212ab"></a>
  297. void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a0bc3593f82b3b4f9839fc051780212ab">internal_copy</a> (const <a class="el" href="a00035.html">concurrent_hash_map</a> &amp;source)</td></tr>
  298. <tr class="memdesc:a0bc3593f82b3b4f9839fc051780212ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy "source" to *this, where *this must start out empty. <br/></td></tr>
  299. <tr class="separator:a0bc3593f82b3b4f9839fc051780212ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
  300. <tr class="memitem:a31e69cc4fd5adafb379e7c6de5660912"><td class="memTemplParams" colspan="2"><a class="anchor" id="a31e69cc4fd5adafb379e7c6de5660912"></a>
  301. template&lt;typename I &gt; </td></tr>
  302. <tr class="memitem:a31e69cc4fd5adafb379e7c6de5660912"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>internal_copy</b> (I first, I last)</td></tr>
  303. <tr class="separator:a31e69cc4fd5adafb379e7c6de5660912"><td class="memSeparator" colspan="2">&#160;</td></tr>
  304. <tr class="memitem:acbb5b18c097fb32f264b7b5fe8d9fdd4"><td class="memItemLeft" align="right" valign="top">const_pointer&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#acbb5b18c097fb32f264b7b5fe8d9fdd4">internal_fast_find</a> (const Key &amp;key) const </td></tr>
  305. <tr class="memdesc:acbb5b18c097fb32f264b7b5fe8d9fdd4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fast find when no concurrent erasure is used. For internal use inside TBB only! <a href="#acbb5b18c097fb32f264b7b5fe8d9fdd4">More...</a><br/></td></tr>
  306. <tr class="separator:acbb5b18c097fb32f264b7b5fe8d9fdd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
  307. </table><table class="memberdecls">
  308. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
  309. Protected Attributes</h2></td></tr>
  310. <tr class="memitem:a2f3f082b2719a9e3c3c15a51a9564202"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2f3f082b2719a9e3c3c15a51a9564202"></a>
  311. node_allocator_type&#160;</td><td class="memItemRight" valign="bottom"><b>my_allocator</b></td></tr>
  312. <tr class="separator:a2f3f082b2719a9e3c3c15a51a9564202"><td class="memSeparator" colspan="2">&#160;</td></tr>
  313. <tr class="memitem:ae67c3c723768e7e396104f84577f7240"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae67c3c723768e7e396104f84577f7240"></a>
  314. HashCompare&#160;</td><td class="memItemRight" valign="bottom"><b>my_hash_compare</b></td></tr>
  315. <tr class="separator:ae67c3c723768e7e396104f84577f7240"><td class="memSeparator" colspan="2">&#160;</td></tr>
  316. </table><table class="memberdecls">
  317. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
  318. Friends</h2></td></tr>
  319. <tr class="memitem:a0ecadabdc31088d7bace5a0b6e5ee3f9"><td class="memTemplParams" colspan="2"><a class="anchor" id="a0ecadabdc31088d7bace5a0b6e5ee3f9"></a>
  320. template&lt;typename Container , typename Value &gt; </td></tr>
  321. <tr class="memitem:a0ecadabdc31088d7bace5a0b6e5ee3f9"><td class="memTemplItemLeft" align="right" valign="top">class&#160;</td><td class="memTemplItemRight" valign="bottom"><b>internal::hash_map_iterator</b></td></tr>
  322. <tr class="separator:a0ecadabdc31088d7bace5a0b6e5ee3f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
  323. <tr class="memitem:ad49112156111ee1b85be9f4b89e410ca"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad49112156111ee1b85be9f4b89e410ca"></a>
  324. template&lt;typename I &gt; </td></tr>
  325. <tr class="memitem:ad49112156111ee1b85be9f4b89e410ca"><td class="memTemplItemLeft" align="right" valign="top">class&#160;</td><td class="memTemplItemRight" valign="bottom"><b>internal::hash_map_range</b></td></tr>
  326. <tr class="separator:ad49112156111ee1b85be9f4b89e410ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
  327. <tr class="memitem:a584bf754a8408612d4bfd33a3eafd80d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a584bf754a8408612d4bfd33a3eafd80d"></a>
  328. class&#160;</td><td class="memItemRight" valign="bottom"><b>const_accessor</b></td></tr>
  329. <tr class="separator:a584bf754a8408612d4bfd33a3eafd80d"><td class="memSeparator" colspan="2">&#160;</td></tr>
  330. </table>
  331. <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
  332. <div class="textblock"><h3>template&lt;typename Key, typename T, typename HashCompare = tbb_hash_compare&lt;Key&gt;, typename A = tbb_allocator&lt;std::pair&lt;Key, T&gt; &gt;&gt;<br/>
  333. class tbb::interface5::concurrent_hash_map&lt; Key, T, HashCompare, A &gt;</h3>
  334. <p>Unordered map from Key to T. </p>
  335. <pre class="fragment">concurrent_hash_map is associative container with concurrent access.
  336. </pre><dl class="section user"><dt>Compatibility</dt><dd>The class meets all Container Requirements from C++ Standard (See ISO/IEC 14882:2003(E), clause 23.1).</dd></dl>
  337. <dl class="section user"><dt>Exception Safety</dt><dd><ul>
  338. <li>Hash function is not permitted to throw an exception. User-defined types Key and T are forbidden from throwing an exception in destructors.</li>
  339. <li>If exception happens during <a class="el" href="a00035.html#aaebb10a9e9dcb24e63860caa745a281d" title="Insert item (if not already present) and acquire a read lock on the item. ">insert()</a> operations, it has no effect (unless exception raised by HashCompare::hash() function during grow_segment).</li>
  340. <li>If exception happens during <a class="el" href="a00035.html#a63e01b1f79c287ae0257ccfd483fd90a" title="Assignment. ">operator=()</a> operation, the container can have a part of source items, and methods <a class="el" href="a00035.html#ad2ce6da7cd62bc7425f0a29498332ab4" title="Number of items in table. ">size()</a> and <a class="el" href="a00035.html#a5e05f2a1ca3accfb4252d7ee82d1e990" title="True if size()==0. ">empty()</a> can return wrong results.</li>
  341. </ul>
  342. </dd></dl>
  343. <dl class="section user"><dt>Changes since TBB 2.1</dt><dd><ul>
  344. <li>Replaced internal algorithm and data structure. Patent is pending.</li>
  345. <li>Added buckets number argument for constructor</li>
  346. </ul>
  347. </dd></dl>
  348. <dl class="section user"><dt>Changes since TBB 2.0</dt><dd><ul>
  349. <li>Fixed exception-safety</li>
  350. <li>Added template argument for allocator</li>
  351. <li>Added allocator argument in constructors</li>
  352. <li>Added constructor from a range of iterators</li>
  353. <li>Added several new overloaded <a class="el" href="a00035.html#aaebb10a9e9dcb24e63860caa745a281d" title="Insert item (if not already present) and acquire a read lock on the item. ">insert()</a> methods</li>
  354. <li>Added <a class="el" href="a00035.html#a121865c574f8ae5cae69ed3d6b7e0511" title="return allocator object ">get_allocator()</a></li>
  355. <li>Added <a class="el" href="a00035.html#a4c8edf603bc776a6c84c007702c1808e" title="swap two instances. Iterators are invalidated ">swap()</a></li>
  356. <li>Added <a class="el" href="a00035.html#ac375d3884bf9c80efe56117757c822e7" title="Return count of items (0 or 1) ">count()</a></li>
  357. <li>Added overloaded <a class="el" href="a00035.html#a3ed0fbcc6cfd4db8242e100355ac1fa5" title="Erase item by accessor. ">erase(accessor &amp;)</a> and <a class="el" href="a00035.html#a2ec6f95ed9beda9d32df56cdd45c1842" title="Erase item by const_accessor. ">erase(const_accessor&amp;)</a></li>
  358. <li>Added equal_range() [const]</li>
  359. <li>Added [const_]pointer, [const_]reference, and allocator_type types</li>
  360. <li>Added global functions: operator==(), operator!=(), and <a class="el" href="a00035.html#a4c8edf603bc776a6c84c007702c1808e" title="swap two instances. Iterators are invalidated ">swap()</a> </li>
  361. </ul>
  362. </dd></dl>
  363. </div><h2 class="groupheader">Member Function Documentation</h2>
  364. <a class="anchor" id="a5144122dbb946d933b94a92117543b33"></a>
  365. <div class="memitem">
  366. <div class="memproto">
  367. <div class="memtemplate">
  368. template&lt;typename Key , typename T , typename HashCompare , typename A &gt; </div>
  369. <table class="memname">
  370. <tr>
  371. <td class="memname">bool <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map</a>&lt; Key, T, HashCompare, A &gt;::erase </td>
  372. <td>(</td>
  373. <td class="paramtype">const Key &amp;&#160;</td>
  374. <td class="paramname"><em>key</em>)</td><td></td>
  375. <td></td>
  376. </tr>
  377. </table>
  378. </div><div class="memdoc">
  379. <p>Erase item. </p>
  380. <p>Return true if item was erased by particularly this call. </p>
  381. <p>References <a class="el" href="a00026.html#aaa8167e2961330435fd23eb92127805c">tbb::interface5::concurrent_hash_map&lt; Key, T, HashCompare, A &gt;::bucket_accessor::is_writer()</a>.</p>
  382. </div>
  383. </div>
  384. <a class="anchor" id="a2ec6f95ed9beda9d32df56cdd45c1842"></a>
  385. <div class="memitem">
  386. <div class="memproto">
  387. <div class="memtemplate">
  388. template&lt;typename Key , typename T , typename HashCompare = tbb_hash_compare&lt;Key&gt;, typename A = tbb_allocator&lt;std::pair&lt;Key, T&gt; &gt;&gt; </div>
  389. <table class="mlabels">
  390. <tr>
  391. <td class="mlabels-left">
  392. <table class="memname">
  393. <tr>
  394. <td class="memname">bool <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map</a>&lt; Key, T, HashCompare, A &gt;::erase </td>
  395. <td>(</td>
  396. <td class="paramtype"><a class="el" href="a00047.html">const_accessor</a> &amp;&#160;</td>
  397. <td class="paramname"><em>item_accessor</em>)</td><td></td>
  398. <td></td>
  399. </tr>
  400. </table>
  401. </td>
  402. <td class="mlabels-right">
  403. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  404. </tr>
  405. </table>
  406. </div><div class="memdoc">
  407. <p>Erase item by <a class="el" href="a00047.html" title="Combines data access, locking, and garbage collection. ">const_accessor</a>. </p>
  408. <p>Return true if item was erased by particularly this call. </p>
  409. </div>
  410. </div>
  411. <a class="anchor" id="a3ed0fbcc6cfd4db8242e100355ac1fa5"></a>
  412. <div class="memitem">
  413. <div class="memproto">
  414. <div class="memtemplate">
  415. template&lt;typename Key , typename T , typename HashCompare = tbb_hash_compare&lt;Key&gt;, typename A = tbb_allocator&lt;std::pair&lt;Key, T&gt; &gt;&gt; </div>
  416. <table class="mlabels">
  417. <tr>
  418. <td class="mlabels-left">
  419. <table class="memname">
  420. <tr>
  421. <td class="memname">bool <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map</a>&lt; Key, T, HashCompare, A &gt;::erase </td>
  422. <td>(</td>
  423. <td class="paramtype"><a class="el" href="a00010.html">accessor</a> &amp;&#160;</td>
  424. <td class="paramname"><em>item_accessor</em>)</td><td></td>
  425. <td></td>
  426. </tr>
  427. </table>
  428. </td>
  429. <td class="mlabels-right">
  430. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  431. </tr>
  432. </table>
  433. </div><div class="memdoc">
  434. <p>Erase item by accessor. </p>
  435. <p>Return true if item was erased by particularly this call. </p>
  436. </div>
  437. </div>
  438. <a class="anchor" id="a27a3f296dc170ae25f8e3fd9efa93cff"></a>
  439. <div class="memitem">
  440. <div class="memproto">
  441. <div class="memtemplate">
  442. template&lt;typename Key , typename T , typename HashCompare = tbb_hash_compare&lt;Key&gt;, typename A = tbb_allocator&lt;std::pair&lt;Key, T&gt; &gt;&gt; </div>
  443. <table class="mlabels">
  444. <tr>
  445. <td class="mlabels-left">
  446. <table class="memname">
  447. <tr>
  448. <td class="memname">bool <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map</a>&lt; Key, T, HashCompare, A &gt;::find </td>
  449. <td>(</td>
  450. <td class="paramtype"><a class="el" href="a00047.html">const_accessor</a> &amp;&#160;</td>
  451. <td class="paramname"><em>result</em>, </td>
  452. </tr>
  453. <tr>
  454. <td class="paramkey"></td>
  455. <td></td>
  456. <td class="paramtype">const Key &amp;&#160;</td>
  457. <td class="paramname"><em>key</em>&#160;</td>
  458. </tr>
  459. <tr>
  460. <td></td>
  461. <td>)</td>
  462. <td></td><td> const</td>
  463. </tr>
  464. </table>
  465. </td>
  466. <td class="mlabels-right">
  467. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  468. </tr>
  469. </table>
  470. </div><div class="memdoc">
  471. <p>Find item and acquire a read lock on the item. </p>
  472. <p>Return true if item is found, false otherwise. </p>
  473. <p>References <a class="el" href="a00047.html#a18390cb369369d72bdf7c867755b5190">tbb::interface5::concurrent_hash_map&lt; Key, T, HashCompare, A &gt;::const_accessor::release()</a>.</p>
  474. </div>
  475. </div>
  476. <a class="anchor" id="a6b61799e2018381b5ee4b78752a41483"></a>
  477. <div class="memitem">
  478. <div class="memproto">
  479. <div class="memtemplate">
  480. template&lt;typename Key , typename T , typename HashCompare = tbb_hash_compare&lt;Key&gt;, typename A = tbb_allocator&lt;std::pair&lt;Key, T&gt; &gt;&gt; </div>
  481. <table class="mlabels">
  482. <tr>
  483. <td class="mlabels-left">
  484. <table class="memname">
  485. <tr>
  486. <td class="memname">bool <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map</a>&lt; Key, T, HashCompare, A &gt;::find </td>
  487. <td>(</td>
  488. <td class="paramtype"><a class="el" href="a00010.html">accessor</a> &amp;&#160;</td>
  489. <td class="paramname"><em>result</em>, </td>
  490. </tr>
  491. <tr>
  492. <td class="paramkey"></td>
  493. <td></td>
  494. <td class="paramtype">const Key &amp;&#160;</td>
  495. <td class="paramname"><em>key</em>&#160;</td>
  496. </tr>
  497. <tr>
  498. <td></td>
  499. <td>)</td>
  500. <td></td><td></td>
  501. </tr>
  502. </table>
  503. </td>
  504. <td class="mlabels-right">
  505. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  506. </tr>
  507. </table>
  508. </div><div class="memdoc">
  509. <p>Find item and acquire a write lock on the item. </p>
  510. <p>Return true if item is found, false otherwise. </p>
  511. <p>References <a class="el" href="a00047.html#a18390cb369369d72bdf7c867755b5190">tbb::interface5::concurrent_hash_map&lt; Key, T, HashCompare, A &gt;::const_accessor::release()</a>.</p>
  512. </div>
  513. </div>
  514. <a class="anchor" id="aaebb10a9e9dcb24e63860caa745a281d"></a>
  515. <div class="memitem">
  516. <div class="memproto">
  517. <div class="memtemplate">
  518. template&lt;typename Key , typename T , typename HashCompare = tbb_hash_compare&lt;Key&gt;, typename A = tbb_allocator&lt;std::pair&lt;Key, T&gt; &gt;&gt; </div>
  519. <table class="mlabels">
  520. <tr>
  521. <td class="mlabels-left">
  522. <table class="memname">
  523. <tr>
  524. <td class="memname">bool <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map</a>&lt; Key, T, HashCompare, A &gt;::insert </td>
  525. <td>(</td>
  526. <td class="paramtype"><a class="el" href="a00047.html">const_accessor</a> &amp;&#160;</td>
  527. <td class="paramname"><em>result</em>, </td>
  528. </tr>
  529. <tr>
  530. <td class="paramkey"></td>
  531. <td></td>
  532. <td class="paramtype">const Key &amp;&#160;</td>
  533. <td class="paramname"><em>key</em>&#160;</td>
  534. </tr>
  535. <tr>
  536. <td></td>
  537. <td>)</td>
  538. <td></td><td></td>
  539. </tr>
  540. </table>
  541. </td>
  542. <td class="mlabels-right">
  543. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  544. </tr>
  545. </table>
  546. </div><div class="memdoc">
  547. <p>Insert item (if not already present) and acquire a read lock on the item. </p>
  548. <p>Returns true if item is new. </p>
  549. <p>References <a class="el" href="a00047.html#a18390cb369369d72bdf7c867755b5190">tbb::interface5::concurrent_hash_map&lt; Key, T, HashCompare, A &gt;::const_accessor::release()</a>.</p>
  550. </div>
  551. </div>
  552. <a class="anchor" id="a766c6033c203e8f342501d85a7cf3405"></a>
  553. <div class="memitem">
  554. <div class="memproto">
  555. <div class="memtemplate">
  556. template&lt;typename Key , typename T , typename HashCompare = tbb_hash_compare&lt;Key&gt;, typename A = tbb_allocator&lt;std::pair&lt;Key, T&gt; &gt;&gt; </div>
  557. <table class="mlabels">
  558. <tr>
  559. <td class="mlabels-left">
  560. <table class="memname">
  561. <tr>
  562. <td class="memname">bool <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map</a>&lt; Key, T, HashCompare, A &gt;::insert </td>
  563. <td>(</td>
  564. <td class="paramtype"><a class="el" href="a00010.html">accessor</a> &amp;&#160;</td>
  565. <td class="paramname"><em>result</em>, </td>
  566. </tr>
  567. <tr>
  568. <td class="paramkey"></td>
  569. <td></td>
  570. <td class="paramtype">const Key &amp;&#160;</td>
  571. <td class="paramname"><em>key</em>&#160;</td>
  572. </tr>
  573. <tr>
  574. <td></td>
  575. <td>)</td>
  576. <td></td><td></td>
  577. </tr>
  578. </table>
  579. </td>
  580. <td class="mlabels-right">
  581. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  582. </tr>
  583. </table>
  584. </div><div class="memdoc">
  585. <p>Insert item (if not already present) and acquire a write lock on the item. </p>
  586. <p>Returns true if item is new. </p>
  587. <p>References <a class="el" href="a00047.html#a18390cb369369d72bdf7c867755b5190">tbb::interface5::concurrent_hash_map&lt; Key, T, HashCompare, A &gt;::const_accessor::release()</a>.</p>
  588. </div>
  589. </div>
  590. <a class="anchor" id="ae0b420cdb752e749790c8a7daa15c3c2"></a>
  591. <div class="memitem">
  592. <div class="memproto">
  593. <div class="memtemplate">
  594. template&lt;typename Key , typename T , typename HashCompare = tbb_hash_compare&lt;Key&gt;, typename A = tbb_allocator&lt;std::pair&lt;Key, T&gt; &gt;&gt; </div>
  595. <table class="mlabels">
  596. <tr>
  597. <td class="mlabels-left">
  598. <table class="memname">
  599. <tr>
  600. <td class="memname">bool <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map</a>&lt; Key, T, HashCompare, A &gt;::insert </td>
  601. <td>(</td>
  602. <td class="paramtype"><a class="el" href="a00047.html">const_accessor</a> &amp;&#160;</td>
  603. <td class="paramname"><em>result</em>, </td>
  604. </tr>
  605. <tr>
  606. <td class="paramkey"></td>
  607. <td></td>
  608. <td class="paramtype">const value_type &amp;&#160;</td>
  609. <td class="paramname"><em>value</em>&#160;</td>
  610. </tr>
  611. <tr>
  612. <td></td>
  613. <td>)</td>
  614. <td></td><td></td>
  615. </tr>
  616. </table>
  617. </td>
  618. <td class="mlabels-right">
  619. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  620. </tr>
  621. </table>
  622. </div><div class="memdoc">
  623. <p>Insert item by copying if there is no such key present already and acquire a read lock on the item. </p>
  624. <p>Returns true if item is new. </p>
  625. <p>References <a class="el" href="a00047.html#a18390cb369369d72bdf7c867755b5190">tbb::interface5::concurrent_hash_map&lt; Key, T, HashCompare, A &gt;::const_accessor::release()</a>.</p>
  626. </div>
  627. </div>
  628. <a class="anchor" id="a2047214e041b7674c3b83e204d0d6c6a"></a>
  629. <div class="memitem">
  630. <div class="memproto">
  631. <div class="memtemplate">
  632. template&lt;typename Key , typename T , typename HashCompare = tbb_hash_compare&lt;Key&gt;, typename A = tbb_allocator&lt;std::pair&lt;Key, T&gt; &gt;&gt; </div>
  633. <table class="mlabels">
  634. <tr>
  635. <td class="mlabels-left">
  636. <table class="memname">
  637. <tr>
  638. <td class="memname">bool <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map</a>&lt; Key, T, HashCompare, A &gt;::insert </td>
  639. <td>(</td>
  640. <td class="paramtype"><a class="el" href="a00010.html">accessor</a> &amp;&#160;</td>
  641. <td class="paramname"><em>result</em>, </td>
  642. </tr>
  643. <tr>
  644. <td class="paramkey"></td>
  645. <td></td>
  646. <td class="paramtype">const value_type &amp;&#160;</td>
  647. <td class="paramname"><em>value</em>&#160;</td>
  648. </tr>
  649. <tr>
  650. <td></td>
  651. <td>)</td>
  652. <td></td><td></td>
  653. </tr>
  654. </table>
  655. </td>
  656. <td class="mlabels-right">
  657. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  658. </tr>
  659. </table>
  660. </div><div class="memdoc">
  661. <p>Insert item by copying if there is no such key present already and acquire a write lock on the item. </p>
  662. <p>Returns true if item is new. </p>
  663. <p>References <a class="el" href="a00047.html#a18390cb369369d72bdf7c867755b5190">tbb::interface5::concurrent_hash_map&lt; Key, T, HashCompare, A &gt;::const_accessor::release()</a>.</p>
  664. </div>
  665. </div>
  666. <a class="anchor" id="a8e39501f9edb3210504c9c4ca05384b7"></a>
  667. <div class="memitem">
  668. <div class="memproto">
  669. <div class="memtemplate">
  670. template&lt;typename Key , typename T , typename HashCompare = tbb_hash_compare&lt;Key&gt;, typename A = tbb_allocator&lt;std::pair&lt;Key, T&gt; &gt;&gt; </div>
  671. <table class="mlabels">
  672. <tr>
  673. <td class="mlabels-left">
  674. <table class="memname">
  675. <tr>
  676. <td class="memname">bool <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map</a>&lt; Key, T, HashCompare, A &gt;::insert </td>
  677. <td>(</td>
  678. <td class="paramtype">const value_type &amp;&#160;</td>
  679. <td class="paramname"><em>value</em>)</td><td></td>
  680. <td></td>
  681. </tr>
  682. </table>
  683. </td>
  684. <td class="mlabels-right">
  685. <span class="mlabels"><span class="mlabel">inline</span></span> </td>
  686. </tr>
  687. </table>
  688. </div><div class="memdoc">
  689. <p>Insert item by copying if there is no such key present already. </p>
  690. <p>Returns true if item is inserted. </p>
  691. </div>
  692. </div>
  693. <a class="anchor" id="acbb5b18c097fb32f264b7b5fe8d9fdd4"></a>
  694. <div class="memitem">
  695. <div class="memproto">
  696. <div class="memtemplate">
  697. template&lt;typename Key , typename T , typename HashCompare = tbb_hash_compare&lt;Key&gt;, typename A = tbb_allocator&lt;std::pair&lt;Key, T&gt; &gt;&gt; </div>
  698. <table class="mlabels">
  699. <tr>
  700. <td class="mlabels-left">
  701. <table class="memname">
  702. <tr>
  703. <td class="memname">const_pointer <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map</a>&lt; Key, T, HashCompare, A &gt;::internal_fast_find </td>
  704. <td>(</td>
  705. <td class="paramtype">const Key &amp;&#160;</td>
  706. <td class="paramname"><em>key</em>)</td><td></td>
  707. <td> const</td>
  708. </tr>
  709. </table>
  710. </td>
  711. <td class="mlabels-right">
  712. <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
  713. </tr>
  714. </table>
  715. </div><div class="memdoc">
  716. <p>Fast find when no concurrent erasure is used. For internal use inside TBB only! </p>
  717. <p>Return pointer to item with given key, or NULL if no such item exists. Must not be called concurrently with erasure operations. </p>
  718. </div>
  719. </div>
  720. <a class="anchor" id="adf1fa9470c605731063e5949f0418eb7"></a>
  721. <div class="memitem">
  722. <div class="memproto">
  723. <div class="memtemplate">
  724. template&lt;typename Key , typename T , typename HashCompare , typename A &gt; </div>
  725. <table class="memname">
  726. <tr>
  727. <td class="memname">void <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map</a>&lt; Key, T, HashCompare, A &gt;::rehash </td>
  728. <td>(</td>
  729. <td class="paramtype">size_type&#160;</td>
  730. <td class="paramname"><em>n</em> = <code>0</code>)</td><td></td>
  731. <td></td>
  732. </tr>
  733. </table>
  734. </div><div class="memdoc">
  735. <p>Rehashes and optionally resizes the whole table. </p>
  736. <p>Useful to optimize performance before or after concurrent operations. Also enables using of <a class="el" href="a00035.html#a27a3f296dc170ae25f8e3fd9efa93cff" title="Find item and acquire a read lock on the item. ">find()</a> and <a class="el" href="a00035.html#ac375d3884bf9c80efe56117757c822e7" title="Return count of items (0 or 1) ">count()</a> concurrent methods in serial context. </p>
  737. </div>
  738. </div>
  739. <hr/>The documentation for this class was generated from the following file:<ul>
  740. <li>concurrent_hash_map.h</li>
  741. </ul>
  742. </div><!-- contents -->
  743. <hr>
  744. <p></p>
  745. Copyright &copy; 2005-2014 Intel Corporation. All Rights Reserved.
  746. <p></p>
  747. Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
  748. registered trademarks or trademarks of Intel Corporation or its
  749. subsidiaries in the United States and other countries.
  750. <p></p>
  751. * Other names and brands may be claimed as the property of others.