📄 ____hash_8h-source.html
字号:
<a name="l00214"></a>00214 <span class="preprocessor"></span> assert(<a class="code" href="class____hash_1_1elementlist.html#1b94c068da4cad8afd790b4ac442a3cf">m_ptail</a> != NULL && <a class="code" href="class____hash_1_1elementlist.html#50ab5c88a4d5f2bf4e23f4a84a1a8978">m_plist</a> != NULL);assert(<a class="code" href="class____hash_1_1elementlist.html#50ab5c88a4d5f2bf4e23f4a84a1a8978">m_plist</a>-><a class="code" href="class____hash_1_1listelement.html#f184f68466d02869326d76d4fbdf3a8c">CheckNextAndPrev</a>());assert(SizeCorrect());<a name="l00215"></a>00215 <span class="preprocessor"> #endif</span><a name="l00216"></a>00216 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="class____hash_1_1elementlist.html#1b94c068da4cad8afd790b4ac442a3cf">m_ptail</a>-><a class="code" href="class____hash_1_1listelement.html#446b37fa68f6e5d2077a279c5514e019">m_element</a>;<a name="l00217"></a>00217 }<a name="l00218"></a>00218 <a name="l00220"></a>00220 <a name="l00221"></a><a class="code" href="class____hash_1_1elementlist.html#ae463d4f876aab409907a32c196eb617">00221</a> <span class="keywordtype">void</span> <a class="code" href="class____hash_1_1elementlist.html#ae463d4f876aab409907a32c196eb617">erase</a>(<a class="code" href="class____hash_1_1listelement.html">listelement</a> *le) {<a name="l00222"></a>00222 <span class="preprocessor"> #ifdef DEBUG_AHASH</span><a name="l00223"></a>00223 <span class="preprocessor"></span> assert(m_nSize > 0);<a name="l00224"></a>00224 assert(SizeCorrect());<a name="l00225"></a>00225 m_nSize--;<a name="l00226"></a>00226 <span class="preprocessor"> #endif</span><a name="l00227"></a>00227 <span class="preprocessor"></span> assert(le != NULL);<a name="l00228"></a>00228 assert(<a class="code" href="class____hash_1_1elementlist.html#50ab5c88a4d5f2bf4e23f4a84a1a8978">m_plist</a> != NULL && <a class="code" href="class____hash_1_1elementlist.html#1b94c068da4cad8afd790b4ac442a3cf">m_ptail</a> != NULL);<a name="l00229"></a>00229 <span class="keywordflow">if</span> (le == <a class="code" href="class____hash_1_1elementlist.html#50ab5c88a4d5f2bf4e23f4a84a1a8978">m_plist</a>) {<a name="l00230"></a>00230 assert((<a class="code" href="class____hash_1_1elementlist.html#50ab5c88a4d5f2bf4e23f4a84a1a8978">m_plist</a>-><a class="code" href="class____hash_1_1listelement.html#1ba5225ba561cab079378a5abed504e2">next</a>() == NULL) == (<a class="code" href="class____hash_1_1elementlist.html#50ab5c88a4d5f2bf4e23f4a84a1a8978">m_plist</a> == <a class="code" href="class____hash_1_1elementlist.html#1b94c068da4cad8afd790b4ac442a3cf">m_ptail</a>));<a name="l00231"></a>00231 <a class="code" href="class____hash_1_1elementlist.html#50ab5c88a4d5f2bf4e23f4a84a1a8978">m_plist</a> = m_plist-><a class="code" href="class____hash_1_1listelement.html#1ba5225ba561cab079378a5abed504e2">next</a>();<a name="l00232"></a>00232 <span class="keywordflow">if</span> (m_plist == NULL)<a name="l00233"></a>00233 <a class="code" href="class____hash_1_1elementlist.html#1b94c068da4cad8afd790b4ac442a3cf">m_ptail</a> = NULL;<a name="l00234"></a>00234 }<a name="l00235"></a>00235 <span class="keywordflow">else</span><a name="l00236"></a>00236 <span class="keywordflow">if</span> (le == <a class="code" href="class____hash_1_1elementlist.html#1b94c068da4cad8afd790b4ac442a3cf">m_ptail</a>) {<a name="l00237"></a>00237 <a class="code" href="class____hash_1_1elementlist.html#1b94c068da4cad8afd790b4ac442a3cf">m_ptail</a> = <a class="code" href="class____hash_1_1elementlist.html#1b94c068da4cad8afd790b4ac442a3cf">m_ptail</a>-><a class="code" href="class____hash_1_1listelement.html#da12dd1650f8860e2a203700b5f1c9bf">prev</a>();<a name="l00238"></a>00238 }<a name="l00239"></a>00239 le-><a class="code" href="class____hash_1_1listelement.html#fb209cb064cc13949de51041ea308958">Remove</a>();<a name="l00240"></a>00240 <span class="keyword">delete</span> le;<a name="l00241"></a>00241 assert(<a class="code" href="class____hash_1_1elementlist.html#50ab5c88a4d5f2bf4e23f4a84a1a8978">m_plist</a> == NULL || <a class="code" href="class____hash_1_1elementlist.html#50ab5c88a4d5f2bf4e23f4a84a1a8978">m_plist</a>-><a class="code" href="class____hash_1_1listelement.html#9c66bb0785ffe4619a38252d200e9fad">m_pPrev</a> == NULL);<a name="l00242"></a>00242 <span class="preprocessor"> #ifdef DEBUG_AHASH</span><a name="l00243"></a>00243 <span class="preprocessor"></span> assert(<a class="code" href="class____hash_1_1elementlist.html#cad3ca46cf3542bab13a6b9343efb3d1">BothNULLorNonNULL</a>());<a name="l00244"></a>00244 assert(SizeCorrect());<a name="l00245"></a>00245 <span class="preprocessor"> #endif</span><a name="l00246"></a>00246 <span class="preprocessor"></span> <span class="comment">//assert(false);</span><a name="l00247"></a>00247 <span class="comment">//}</span><a name="l00248"></a>00248 }<a name="l00249"></a>00249 <a name="l00251"></a><a class="code" href="class____hash_1_1elementlist.html#cad3ca46cf3542bab13a6b9343efb3d1">00251</a> <span class="keywordtype">bool</span> <a class="code" href="class____hash_1_1elementlist.html#cad3ca46cf3542bab13a6b9343efb3d1">BothNULLorNonNULL</a>()<span class="keyword"> const </span>{<a name="l00252"></a>00252 <span class="keywordtype">bool</span> bListNULL = <a class="code" href="class____hash_1_1elementlist.html#50ab5c88a4d5f2bf4e23f4a84a1a8978">m_plist</a> == NULL;<a name="l00253"></a>00253 <span class="keywordtype">bool</span> bTailNULL = <a class="code" href="class____hash_1_1elementlist.html#1b94c068da4cad8afd790b4ac442a3cf">m_ptail</a> == NULL;<a name="l00254"></a>00254 <span class="keywordtype">bool</span> bSuccess = bListNULL == bTailNULL;<a name="l00255"></a>00255 <span class="keywordflow">return</span> bSuccess;<a name="l00256"></a>00256 }<a name="l00257"></a>00257 <a name="l00259"></a>00259 <a class="code" href="class____hash_1_1listelement.html">listelement</a> *<a class="code" href="class____hash_1_1elementlist.html#8f2e2a9891a3f141512cf914f2a4c5b4">push_back</a>(<span class="keyword">const</span> T &element);<a name="l00261"></a><a class="code" href="class____hash_1_1elementlist.html#c099a2e1dc906ef7aafd1822508060ca">00261</a> <span class="keywordtype">bool</span> <a class="code" href="class____hash_1_1elementlist.html#c099a2e1dc906ef7aafd1822508060ca">empty</a>()<span class="keyword"> const </span>{<a name="l00262"></a>00262 <span class="preprocessor"> #ifdef DEBUG_AHASH</span><a name="l00263"></a>00263 <span class="preprocessor"></span> assert(<a class="code" href="class____hash_1_1elementlist.html#50ab5c88a4d5f2bf4e23f4a84a1a8978">m_plist</a> == NULL || <a class="code" href="class____hash_1_1elementlist.html#50ab5c88a4d5f2bf4e23f4a84a1a8978">m_plist</a>-><a class="code" href="class____hash_1_1listelement.html#f184f68466d02869326d76d4fbdf3a8c">CheckNextAndPrev</a>());assert(<a class="code" href="class____hash_1_1elementlist.html#cad3ca46cf3542bab13a6b9343efb3d1">BothNULLorNonNULL</a>());assert(SizeCorrect());<a name="l00264"></a>00264 <span class="preprocessor"> #endif</span><a name="l00265"></a>00265 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="class____hash_1_1elementlist.html#50ab5c88a4d5f2bf4e23f4a84a1a8978">m_plist</a> == NULL;<a name="l00266"></a>00266 }<a name="l00268"></a>00268 <span class="keywordtype">void</span> <a class="code" href="class____hash_1_1elementlist.html#36762693fad1a1a50d1b4593dd9eff3b">clear</a>();<a name="l00270"></a>00270 <a name="l00271"></a>00271 size_t <a class="code" href="class____hash_1_1elementlist.html#449560ee57c4d324b8dbf39c13c43f15">size</a>() <span class="keyword">const</span>;<a name="l00272"></a>00272 <span class="keyword">private</span>:<a name="l00274"></a>00274 <span class="keywordtype">void</span> <a class="code" href="class____hash_1_1elementlist.html#4f4447b9309214b537f5185e3d6da2dd">Destroy</a>();<a name="l00276"></a>00276 <span class="keywordtype">void</span> <a class="code" href="class____hash_1_1elementlist.html#c5f6c8e8f42981fbb405913d04145e37">Copy</a>(<span class="keyword">const</span> <a class="code" href="class____hash_1_1elementlist.html">elementlist</a> &el);<a name="l00277"></a>00277 <span class="preprocessor"> #ifdef DEBUG_AHASH</span><a name="l00279"></a>00279 <span class="preprocessor"> bool SizeCorrect() const {</span><a name="l00280"></a>00280 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="class____hash_1_1elementlist.html#449560ee57c4d324b8dbf39c13c43f15">size</a>() == m_nSize;<a name="l00281"></a>00281 }<a name="l00282"></a>00282 <span class="preprocessor"> #endif</span><a name="l00283"></a>00283 <span class="preprocessor"></span><a name="l00284"></a><a class="code" href="class____hash_1_1elementlist.html#1b94c068da4cad8afd790b4ac442a3cf">00284</a> <a class="code" href="class____hash_1_1listelement.html">listelement</a> *m_plist,<a name="l00285"></a>00285 *m_ptail;<a name="l00286"></a>00286 <span class="preprocessor"> #ifdef DEBUG_AHASH</span><a name="l00287"></a>00287 <span class="preprocessor"></span> size_t m_nSize;<a name="l00288"></a>00288 <span class="preprocessor"> #endif</span><a name="l00289"></a>00289 <span class="preprocessor"></span> };<span class="comment">//class elementlist</span><a name="l00290"></a>00290 <a name="l00291"></a><a class="code" href="class____hash.html#ebd8392c104a6f4ab41d4d7e0501d59f">00291</a> <span class="keyword">typedef</span> <a class="code" href="class____hash_1_1elementlist.html">elementlist</a> <a class="code" href="class____hash_1_1elementlist.html">hashelementlist</a>;<a name="l00292"></a>00292 <a name="l00293"></a><a class="code" href="class____hash.html#956bc5dcc9934d497ea9d68d4e334ffc">00293</a> <span class="keyword">typedef</span> <a class="code" href="class____hash_1_1elementlist.html">hashelementlist</a> * <a class="code" href="class____hash_1_1elementlist.html">phashelementlist</a>;<a name="l00294"></a>00294 <a name="l00295"></a>00295 <span class="keyword">protected</span>:<a name="l00296"></a><a class="code" href="class____hash.html#c8bbb98976b2a575c409c079d1ff84f1">00296</a> <span class="keyword">typedef</span> std::vector<hashelementlist> bucket_array;<a name="l00297"></a><a class="code" href="class____hash.html#89553b3d9132fb9c47ff04b1310800df">00297</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> std::vector<hashelementlist>::size_type bucket_array_unit;<a name="l00298"></a>00298 <a name="l00299"></a>00299 <span class="keyword">protected</span>:<a name="l00300"></a><a class="code" href="class____hash.html#95205784b60449f69d687aabe311f2a4">00300</a> bucket_array m_buckets;<a name="l00301"></a><a class="code" href="class____hash.html#a1ff8201f11069633842f684c419ee7e">00301</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_nCount;<a name="l00302"></a>00302 <a name="l00303"></a>00303 <span class="keyword">public</span>:<a name="l00305"></a>00305 <a name="l00306"></a><a class="code" href="class____hash.html#f03db117c2785e68e0076f250b52f4ed">00306</a> <span class="keywordtype">void</span> SetBucketSize(bucket_array_unit nNewSize) {<a name="l00307"></a>00307 assert(empty());<a name="l00308"></a>00308 m_buckets.resize(nNewSize);<a name="l00309"></a>00309 }<a name="l00315"></a><a class="code" href="class____hash.html#2b3496393272c8d576bb96761d122938">00315</a> bucket_array_unit GetBucketSize()<span class="keyword"> const </span>{<a name="l00316"></a>00316 <span class="keywordflow">return</span> <a class="code" href="class____hash.html">__hash<T>::m_buckets</a>.size();<a name="l00317"></a>00317 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -