📄 ahashp_8h-source.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>ahash: ahashp.h Source File</title><link href="doxygen.css" rel="stylesheet" type="text/css"><link href="tabs.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.5.0 --><div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="classes.html"><span>Classes</span></a></li> <li id="current"><a href="files.html"><span>Files</span></a></li> <li><a href="dirs.html"><span>Directories</span></a></li> </ul></div><div class="nav"><a class="el" href="dir_f0fcf61933910bd388b90fbcdd03e436.html">work_stuff</a> » <a class="el" href="dir_1bb4b0d7a6d3f13e8e897b68dcd29d80.html">ahash</a> » <a class="el" href="dir_5d70c39efa174681cb9f74ad0098b025.html">src</a></div><h1>ahashp.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef THE_A_HASH_TEMPLATE_THAT_RETURNS_POITNERS_IN_THE_GET_RATHER_THAN_REFERENCES_20061219_H__</span><a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define THE_A_HASH_TEMPLATE_THAT_RETURNS_POITNERS_IN_THE_GET_RATHER_THAN_REFERENCES_20061219_H__</span><a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">/***************************************************************************</span><a name="l00004"></a>00004 <span class="comment"> * Copyright (C) 2004 by Uducat.com *</span><a name="l00005"></a>00005 <span class="comment"> * uducat.com *</span><a name="l00006"></a>00006 <span class="comment"> * *</span><a name="l00007"></a>00007 <span class="comment"> ***************************************************************************/</span><a name="l00008"></a>00008 <a name="l00009"></a>00009 <span class="preprocessor">#ifdef _MSC_VER</span><a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#include "___hash.h"</span><a name="l00011"></a>00011 <span class="preprocessor">#else</span><a name="l00012"></a>00012 <span class="preprocessor"></span><span class="preprocessor">#include "__hash.h"</span><a name="l00013"></a>00013 <span class="preprocessor">#endif</span><a name="l00014"></a>00014 <span class="preprocessor"></span><a name="l00015"></a>00015 <span class="preprocessor">#ifndef COMPAREREFERENCESPREATTRIBUTES </span><a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define COMPAREREFERENCESPREATTRIBUTES </span><a name="l00017"></a>00017 <span class="preprocessor"></span><span class="preprocessor">#endif</span><a name="l00018"></a>00018 <span class="preprocessor"></span><span class="preprocessor">#ifndef COMPAREREFERENCESPOSTATTRIBUTES</span><a name="l00019"></a>00019 <span class="preprocessor"></span><span class="preprocessor">#define COMPAREREFERENCESPOSTATTRIBUTES</span><a name="l00020"></a>00020 <span class="preprocessor"></span><span class="preprocessor">#endif</span><a name="l00021"></a>00021 <span class="preprocessor"></span><a name="l00033"></a>00033 <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> KEY_TYPE = const <span class="keywordtype">char</span> *><a name="l00034"></a><a class="code" href="class__HashP.html">00034</a> <span class="keyword">class </span><a class="code" href="class__HashP.html">_HashP</a> : <span class="keyword">public</span> <a class="code" href="class____hash.html">__hash</a><T> {<a name="l00035"></a>00035 <span class="keyword">protected</span>:<a name="l00036"></a>00036 <a class="code" href="class__HashP.html#8532366c1aef5677f09c6118e059e314">_HashP</a>(<span class="keywordtype">int</span> nBucketSize = 0);<a name="l00037"></a>00037 <a name="l00038"></a>00038 <span class="keyword">public</span>:<a name="l00039"></a><a class="code" href="class__HashP.html#aa586f5e61332a125a6a9ac05d8426ab">00039</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="class____hash.html">__hash<T>::hasherator</a> <a class="code" href="class____hash_1_1hasherator.html">hasherator</a>;<a name="l00040"></a><a class="code" href="class__HashP.html#697b21bdc54367114d11f61a3a1c1f44">00040</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="class____hash.html">__hash<T>::const_hasherator</a> <a class="code" href="class____hash_1_1const__hasherator.html">const_hasherator</a>;<a name="l00041"></a><a class="code" href="class__HashP.html#36bec57ba42a749f9e6576b0b62962e3">00041</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="class____hash.html">__hash<T>::bucket_array_unit</a> <a class="code" href="class__HashP.html#36bec57ba42a749f9e6576b0b62962e3">bucket_array_unit</a>;<a name="l00042"></a>00042 <span class="keyword">private</span>:<a name="l00043"></a><a class="code" href="class__HashP.html#fdb35abcdd81ece11dd146b23ed1a7dc">00043</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="class____hash.html">__hash<T>::elementlist</a> <a class="code" href="class____hash_1_1elementlist.html">elementlist</a>;<a name="l00044"></a><a class="code" href="class__HashP.html#045d3db5af611c34f7cad1291f8c212d">00044</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="class____hash.html">__hash<T>::bucket_array</a> <a class="code" href="class__HashP.html#045d3db5af611c34f7cad1291f8c212d">bucket_array</a>;<a name="l00045"></a><a class="code" href="class__HashP.html#d773d67ed3053d3e4e9af42b95a78e71">00045</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="class____hash.html">__hash<T>::listelement</a> <a class="code" href="class____hash_1_1listelement.html">listelement</a>;<a name="l00046"></a><a class="code" href="class__HashP.html#1859cee0f6ab29c8f70cc49d54ce5f17">00046</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="class____hash.html">__hash<T>::hashelementlist</a> <a class="code" href="class____hash_1_1elementlist.html">hashelementlist</a>;<a name="l00047"></a><a class="code" href="class__HashP.html#4febe3c16f59f17354e27f458d19cc31">00047</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="class____hash.html">__hash<T>::phashelementlist</a> <a class="code" href="class____hash_1_1elementlist.html">phashelementlist</a>;<a name="l00048"></a>00048 <a name="l00049"></a>00049 <span class="keyword">private</span>:<a name="l00058"></a>00058 <span class="keyword">virtual</span> <a class="code" href="class__HashP.html#36bec57ba42a749f9e6576b0b62962e3">bucket_array_unit</a> HASHREFERENCEPREATTRIBUTES <a class="code" href="class__HashP.html#d5b50e26f6f37022a0fc347880267750">GetHashReference</a>(KEY_TYPE ref) <span class="keyword">const</span> HASHREFERENCEPOSTATTRIBUTES=0;<a name="l00068"></a>00068 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> COMPAREREFERENCESPREATTRIBUTES <a class="code" href="class__HashP.html#4a91aaccf66b4a916a0f4d27fb6aff29">CompareReferences</a>(<span class="keyword">const</span> T &ref1, KEY_TYPE ref2) <span class="keyword">const</span> COMPAREREFERENCESPOSTATTRIBUTES =0;<a name="l00069"></a>00069 <a name="l00070"></a>00070 <span class="keyword">public</span>:<a name="l00071"></a>00071 <span class="keywordtype">void</span> <a class="code" href="class__HashP.html#5e4e2a94d9a033bac864588b4abe8488">erase</a>(KEY_TYPE r);<a name="l00073"></a>00073 T &<a class="code" href="class__HashP.html#7e6755d6859d109e884dca47317742bf">Set</a>(<span class="keyword">const</span> T &t);<a name="l00077"></a><a class="code" href="class__HashP.html#7d1fca31b4325a61bd9e524da66674d5">00077</a> <span class="keyword">const</span> T *<a class="code" href="class__HashP.html#7d1fca31b4325a61bd9e524da66674d5">Get</a>(KEY_TYPE ref)<span class="keyword"> const </span>{<a name="l00078"></a>00078 <span class="keyword">const</span> T *pElement = <a class="code" href="class__HashP.html#3ee36fa83d4d6370c6713bdc0a43bcf0">Find</a>(ref);<a name="l00079"></a>00079 <span class="keywordflow">return</span> pElement;<a name="l00080"></a>00080 }<a name="l00086"></a>00086 T *<a class="code" href="class__HashP.html#7d1fca31b4325a61bd9e524da66674d5">Get</a>(KEY_TYPE ref);<a name="l00088"></a>00088 <a name="l00089"></a>00089 <span class="keyword">const</span> T *<a class="code" href="class__HashP.html#3ee36fa83d4d6370c6713bdc0a43bcf0">Find</a>(KEY_TYPE ref) <span class="keyword">const</span>;<a name="l00091"></a>00091 <a name="l00092"></a><a class="code" href="class__HashP.html#a47d77bd974a16bea038e41850a660fd">00092</a> <span class="keywordtype">bool</span> <a class="code" href="class__HashP.html#a47d77bd974a16bea038e41850a660fd">IsAdded</a>(KEY_TYPE ref)<span class="keyword"> const </span>{<a name="l00093"></a>00093 <span class="keywordflow">return</span> <a class="code" href="class__HashP.html#3ee36fa83d4d6370c6713bdc0a43bcf0">Find</a>(ref) != NULL;<a name="l00094"></a>00094 }<a name="l00095"></a>00095 <a name="l00096"></a>00096 <span class="preprocessor"> #ifdef HASH_BENCHMARK</span><a name="l00097"></a>00097 <span class="preprocessor"></span> <span class="keywordtype">void</span> ReportGetCollisions(_Log *pLog)<span class="keyword"> const </span>{<a name="l00098"></a>00098 <span class="keywordtype">char</span> c[100];<a name="l00099"></a>00099 sprintf(c, <span class="stringliteral">"%d collisions / %d get calls = %f"</span>, m_nGetCollisionCount, m_nGetCallCount, <span class="keywordtype">double</span>(m_nGetCollisionCount)/m_nGetCallCount);<a name="l00100"></a>00100 pLog->LogLine(c);<a name="l00101"></a>00101 }<a name="l00102"></a>00102 <span class="keyword">private</span>:<a name="l00103"></a>00103 <span class="keywordtype">int</span> m_nGetCallCount, m_nGetCollisionCount;<a name="l00104"></a>00104 <span class="preprocessor"> #endif</span><a name="l00105"></a>00105 <span class="preprocessor"></span> <a name="l00106"></a>00106 <a name="l00107"></a>00107 <span class="keyword">private</span>:<a name="l00108"></a>00108 <a class="code" href="class__HashP.html#d773d67ed3053d3e4e9af42b95a78e71">listelement</a> *<a class="code" href="class__HashP.html#c02c81c0f04e0e4d5edce2518f5764df">SeekIterator</a>(<a class="code" href="class__HashP.html#4febe3c16f59f17354e27f458d19cc31">phashelementlist</a> &plist, KEY_TYPE);<a name="l00109"></a>00109 };<a name="l00110"></a>00110 <a name="l00111"></a>00111
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -