📄 class____hash.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: __hash< T > Class Template Reference</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 id="current"><a href="classes.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li><a href="dirs.html"><span>Directories</span></a></li> </ul></div><div class="tabs"> <ul> <li><a href="classes.html"><span>Alphabetical List</span></a></li> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul></div><h1>__hash< T > Class Template Reference</h1><!-- doxytag: class="__hash" -->The root class of all hash tables used by the astdlib. <a href="#_details">More...</a><p><code>#include <<a class="el" href="____hash_8h-source.html">__hash.h</a>></code><p><p>Inheritance diagram for __hash< T >:<p><center><img src="class____hash.png" usemap="#__hash< T >_map" border="0" alt=""></center><map name="__hash< T >_map"><area href="class__HashP.html" alt="_HashP< T, KEY_TYPE >" shape="rect" coords="0,56,160,80"><area href="class__HashPS.html" alt="_HashPS< T >" shape="rect" coords="170,56,330,80"><area href="class__Hash.html" alt="_Hash< T, KEY_TYPE >" shape="rect" coords="0,112,160,136"></map><a href="class____hash-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"><tr><td></td></tr><tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f64e2ff54613d47d0ed8572ff607deeb"></a><!-- doxytag: member="__hash::ReportCollisions" ref="f64e2ff54613d47d0ed8572ff607deeb" args="(_Log *pLog, bool bSuppressZeroCollisions=TRUE, bool bSuppressElements=TRUE) const" -->void </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash.html#f64e2ff54613d47d0ed8572ff607deeb">ReportCollisions</a> (_Log *pLog, bool bSuppressZeroCollisions=TRUE, bool bSuppressElements=TRUE) const</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Creats a text report on the number of collisions in the table. <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">T & </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash.html#13e7745fa4ebf4cefd9381da205b0978">Add</a> (const T &t)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Adds an element to the table. <a href="#13e7745fa4ebf4cefd9381da205b0978"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash.html#4506917cf326f3c28fd5a09c80742824">empty</a> () const</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Is the table empty? <a href="#4506917cf326f3c28fd5a09c80742824"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash.html#5b0c8a3e289645b5288bc35e552a4fd6">size</a> () const</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the number of elements in the table. <a href="#5b0c8a3e289645b5288bc35e552a4fd6"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash.html#dd79ea5a829528548909b5809aa9749b">clear</a> ()</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Removes all elements from the hash table. <a href="#dd79ea5a829528548909b5809aa9749b"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash.html#f03db117c2785e68e0076f250b52f4ed">SetBucketSize</a> (<a class="el" href="class____hash.html#89553b3d9132fb9c47ff04b1310800df">bucket_array_unit</a> nNewSize)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the size of the bucket array. <a href="#f03db117c2785e68e0076f250b52f4ed"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class____hash.html#89553b3d9132fb9c47ff04b1310800df">bucket_array_unit</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash.html#2b3496393272c8d576bb96761d122938">GetBucketSize</a> () const</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the size of the bucket array, as set in <a class="el" href="class____hash.html#f03db117c2785e68e0076f250b52f4ed">SetBucketSize()</a>. <a href="#2b3496393272c8d576bb96761d122938"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash.html#75f8b134371749b1df974ad04c7b5909">TakeArray</a> (const std::vector< T > &array)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Takes an array and adds the elements to this hash table. <a href="#75f8b134371749b1df974ad04c7b5909"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class____hash.html#89553b3d9132fb9c47ff04b1310800df">bucket_array_unit</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash.html#b74784b9b36df3d2a5fc7e84edc302c1">GetArray</a> (std::vector< T > &array) const</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Gets an array of the table's contents. <a href="#b74784b9b36df3d2a5fc7e84edc302c1"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class____hash.html#89553b3d9132fb9c47ff04b1310800df">bucket_array_unit</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash.html#b6ea7e2b2078eed4efd6677038ea63cc">GetBucketStats</a> (std::vector< size_t > &array) const</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Useful for getting the statistics for a table in debug mode. <a href="#b6ea7e2b2078eed4efd6677038ea63cc"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class____hash_1_1hasherator.html">hasherator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash.html#9d12bd08a34697e1486ccb92008445d4">begin</a> ()</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the first reference in the hash table. <a href="#9d12bd08a34697e1486ccb92008445d4"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class____hash_1_1const__hasherator.html">const_hasherator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash.html#e885e2c4334d8573e3ad4b1d7ca5c7ec">begin</a> () const</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the first reference in the hash table. <a href="#e885e2c4334d8573e3ad4b1d7ca5c7ec"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a8885d121d5105769c4cfd3ee0ec89b7"></a><!-- doxytag: member="__hash::Delete" ref="a8885d121d5105769c4cfd3ee0ec89b7" args="()" -->void </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash.html#a8885d121d5105769c4cfd3ee0ec89b7">Delete</a> ()</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Removes all elements from the table and clears the bucket array. <br></td></tr><tr><td colspan="2"><br><h2>Protected Types</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ebd8392c104a6f4ab41d4d7e0501d59f"></a><!-- doxytag: member="__hash::hashelementlist" ref="ebd8392c104a6f4ab41d4d7e0501d59f" args="" -->typedef <a class="el" href="class____hash_1_1elementlist.html">elementlist</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash.html#ebd8392c104a6f4ab41d4d7e0501d59f">hashelementlist</a></td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">The type for a list of elements. <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="956bc5dcc9934d497ea9d68d4e334ffc"></a><!-- doxytag: member="__hash::phashelementlist" ref="956bc5dcc9934d497ea9d68d4e334ffc" args="" -->typedef <a class="el" href="class____hash_1_1elementlist.html">hashelementlist</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash.html#956bc5dcc9934d497ea9d68d4e334ffc">phashelementlist</a></td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">A pointer to a list which is an element of the pointer table. <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c8bbb98976b2a575c409c079d1ff84f1"></a><!-- doxytag: member="__hash::bucket_array" ref="c8bbb98976b2a575c409c079d1ff84f1" args="" -->typedef std::vector< <a class="el" href="class____hash_1_1elementlist.html">hashelementlist</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash.html#c8bbb98976b2a575c409c079d1ff84f1">bucket_array</a></td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">The type array that will be the table. <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="89553b3d9132fb9c47ff04b1310800df"></a><!-- doxytag: member="__hash::bucket_array_unit" ref="89553b3d9132fb9c47ff04b1310800df" args="" -->typedef std::vector< <a class="el" href="class____hash_1_1elementlist.html">hashelementlist</a> <br>>::size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash.html#89553b3d9132fb9c47ff04b1310800df">bucket_array_unit</a></td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">The units used to index table elements. <br></td></tr><tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="25c5ee0b0b961760bd4f231160749b92"></a><!-- doxytag: member="__hash::__hash" ref="25c5ee0b0b961760bd4f231160749b92" args="(int nBucketArraySize)" --> </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash.html#25c5ee0b0b961760bd4f231160749b92">__hash</a> (int nBucketArraySize)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="class____hash.html#89553b3d9132fb9c47ff04b1310800df">bucket_array_unit</a> <br>HASHREFERENCEPREATTRIBUTES </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash.html#524189108dc1b2154194bfe7480ed25c">GetHashReference</a> (const T &ref) const HASHREFERENCEPOSTATTRIBUTES=0</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the list in which the sought element is to be found. <a href="#524189108dc1b2154194bfe7480ed25c"></a><br></td></tr><tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="95205784b60449f69d687aabe311f2a4"></a><!-- doxytag: member="__hash::m_buckets" ref="95205784b60449f69d687aabe311f2a4" args="" --><a class="el" href="class____hash.html#c8bbb98976b2a575c409c079d1ff84f1">bucket_array</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash.html#95205784b60449f69d687aabe311f2a4">m_buckets</a></td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">The table containing the lists of elements. <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1ff8201f11069633842f684c419ee7e"></a><!-- doxytag: member="__hash::m_nCount" ref="a1ff8201f11069633842f684c419ee7e" args="" -->unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash.html#a1ff8201f11069633842f684c419ee7e">m_nCount</a></td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">The number of elements in the table. <br></td></tr><tr><td colspan="2"><br><h2>Classes</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash_1_1const__hasherator.html">const_hasherator</a></td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">A iterator pointing to a constant hash. <a href="class____hash_1_1const__hasherator.html#_details">More...</a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash_1_1elementlist.html">elementlist</a></td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">A light-weight doubley-linked list. <a href="class____hash_1_1elementlist.html#_details">More...</a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash_1_1hasherator.html">hasherator</a></td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Iterator for <a class="el" href="class____hash.html">__hash</a>. <a href="class____hash_1_1hasherator.html#_details">More...</a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class____hash_1_1listelement.html">listelement</a></td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">A single element for a doubley-linked list, including next and previous pointers. <a href="class____hash_1_1listelement.html#_details">More...</a><br></td></tr></table><hr><a name="_details"></a><h2>Detailed Description</h2><h3>template<typename T><br> class __hash< T ></h3>The root class of all hash tables used by the astdlib. <p>Do not derive directly from this class. Derive from its children.<br> Your hash table class should:<br> 1. Implement <a class="el" href="class____hash.html#524189108dc1b2154194bfe7480ed25c">GetHashReference()</a>.<br> 2. <em>Optional</em> Define macros HASHREFERENCEPREATTRIBUTES and HASHREFERENCEPOSTATTRIBUTES. Doing this might optimize performance with whatever compiler you are using, but such things can be dangerous, so be very careful when using them. <p><hr><h2>Member Function Documentation</h2><a class="anchor" name="13e7745fa4ebf4cefd9381da205b0978"></a><!-- doxytag: member="__hash::Add" ref="13e7745fa4ebf4cefd9381da205b0978" args="(const T &t)" --><div class="memitem"><div class="memproto"><div class="memtemplate">template<typename T> </div> <table class="memname"> <tr> <td class="memname">T & <a class="el" href="class____hash.html">__hash</a>< T >::Add </td> <td>(</td> <td class="paramtype">const T & </td> <td class="paramname"> <em>t</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table></div><div class="memdoc"><p>Adds an element to the table. <p><dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>t</em> </td><td>The data to add to the table </td></tr> </table></dl><dl class="return" compact><dt><b>Returns:</b></dt><dd>A reference to the newly created element </dd></dl></div></div><p><a class="anchor" name="4506917cf326f3c28fd5a09c80742824"></a><!-- doxytag: member="__hash::empty" ref="4506917cf326f3c28fd5a09c80742824" args="() const" --><div class="memitem"><div class="memproto"><div class="memtemplate">template<typename T> </div> <table class="memname"> <tr> <td class="memname">bool <a class="el" href="class____hash.html">__hash</a>< T >::empty </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> const<code> [inline]</code></td> </tr> </table></div><div class="memdoc"><p>Is the table empty? <p><dl class="return" compact><dt><b>Returns:</b></dt><dd>TRUE if there are no elements in the table, FALSE otherwise </dd></dl></div></div><p><a class="anchor" name="5b0c8a3e289645b5288bc35e552a4fd6"></a><!-- doxytag: member="__hash::size" ref="5b0c8a3e289645b5288bc35e552a4fd6" args="() const" --><div class="memitem"><div class="memproto"><div class="memtemplate">template<typename T> </div> <table class="memname"> <tr> <td class="memname">unsigned int <a class="el" href="class____hash.html">__hash</a>< T >::size </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> const<code> [inline]</code></td> </tr> </table></div><div class="memdoc"><p>Gets the number of elements in the table. <p><dl class="note" compact><dt><b>Note:</b></dt><dd>This is not the size of the bucket array, but how many elements of T have been added. </dd></dl><dl class="return" compact><dt><b>Returns:</b></dt><dd>The size of the table. </dd></dl></div></div><p><a class="anchor" name="dd79ea5a829528548909b5809aa9749b"></a><!-- doxytag: member="__hash::clear" ref="dd79ea5a829528548909b5809aa9749b" args="()" --><div class="memitem"><div class="memproto"><div class="memtemplate">template<typename T> </div> <table class="memname"> <tr> <td class="memname">void <a class="el" href="class____hash.html">__hash</a>< T >::clear </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td width="100%"></td> </tr>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -