git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29537 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			140 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			140 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
| \section{\class{wxHashTable}}\label{wxhashtable}
 | |
| 
 | |
| {\bf Please note} that this class is retained for backward compatibility
 | |
| reasons; you should use \helpref{wxHashMap}{wxhashmap}.
 | |
| 
 | |
| This class provides hash table functionality for wxWidgets, and for an
 | |
| application if it wishes.  Data can be hashed on an integer or string
 | |
| key.
 | |
| 
 | |
| \wxheading{Derived from}
 | |
| 
 | |
| \helpref{wxObject}{wxobject}
 | |
| 
 | |
| \wxheading{Include files}
 | |
| 
 | |
| <wx/hash.h>
 | |
| 
 | |
| \wxheading{Example}
 | |
| 
 | |
| Below is an example of using a hash table.
 | |
| 
 | |
| \begin{verbatim}
 | |
|   wxHashTable table(wxKEY_STRING);
 | |
| 
 | |
|   wxPoint *point = new wxPoint(100, 200);
 | |
|   table.Put("point 1", point);
 | |
| 
 | |
|   ....
 | |
| 
 | |
|   wxPoint *found_point = (wxPoint *)table.Get("point 1");
 | |
| \end{verbatim}
 | |
| 
 | |
| A hash table is implemented as an array of pointers to lists. When no
 | |
| data has been stored, the hash table takes only a little more space than
 | |
| this array (default size is 1000).  When a data item is added, an
 | |
| integer is constructed from the integer or string key that is within the
 | |
| bounds of the array. If the array element is NULL, a new (keyed) list is
 | |
| created for the element. Then the data object is appended to the list,
 | |
| storing the key in case other data objects need to be stored in the list
 | |
| also (when a `collision' occurs).
 | |
| 
 | |
| Retrieval involves recalculating the array index from the key, and searching
 | |
| along the keyed list for the data object whose stored key matches the passed
 | |
| key. Obviously this is quicker when there are fewer collisions, so hashing
 | |
| will become inefficient if the number of items to be stored greatly exceeds
 | |
| the size of the hash table.
 | |
| 
 | |
| \wxheading{See also}
 | |
| 
 | |
| \helpref{wxList}{wxlist}
 | |
| 
 | |
| \latexignore{\rtfignore{\wxheading{Members}}}
 | |
| 
 | |
| \membersection{wxHashTable::wxHashTable}\label{wxhashtablector}
 | |
| 
 | |
| \func{}{wxHashTable}{\param{unsigned int}{ key\_type}, \param{int}{ size = 1000}}
 | |
| 
 | |
| Constructor. {\it key\_type} is one of wxKEY\_INTEGER, or wxKEY\_STRING,
 | |
| and indicates what sort of keying is required. {\it size} is optional.
 | |
| 
 | |
| \membersection{wxHashTable::\destruct{wxHashTable}}\label{wxhashtabledtor}
 | |
| 
 | |
| \func{}{\destruct{wxHashTable}}{\void}
 | |
| 
 | |
| Destroys the hash table.
 | |
| 
 | |
| \membersection{wxHashTable::BeginFind}\label{wxhashtablebeginfind}
 | |
| 
 | |
| \func{void}{BeginFind}{\void}
 | |
| 
 | |
| The counterpart of {\it Next}.  If the application wishes to iterate
 | |
| through all the data in the hash table, it can call {\it BeginFind} and
 | |
| then loop on {\it Next}.
 | |
| 
 | |
| \membersection{wxHashTable::Clear}\label{wxhashtableclear}
 | |
| 
 | |
| \func{void}{Clear}{\void}
 | |
| 
 | |
| Clears the hash table of all nodes (but as usual, doesn't delete user data).
 | |
| 
 | |
| \membersection{wxHashTable::Delete}\label{wxhashtabledelete}
 | |
| 
 | |
| \func{wxObject *}{Delete}{\param{long}{ key}}
 | |
| 
 | |
| \func{wxObject *}{Delete}{\param{const wxString\& }{ key}}
 | |
| 
 | |
| Deletes entry in hash table and returns the user's data (if found).
 | |
| 
 | |
| \membersection{wxHashTable::DeleteContents}\label{wxhashtabledeletecontents}
 | |
| 
 | |
| \func{void}{DeleteContents}{\param{bool}{ flag}}
 | |
| 
 | |
| If set to true data stored in hash table will be deleted when hash table object
 | |
| is destroyed.
 | |
| 
 | |
| 
 | |
| \membersection{wxHashTable::Get}\label{wxhashtableget}
 | |
| 
 | |
| \func{wxObject *}{Get}{\param{long}{ key}}
 | |
| 
 | |
| \func{wxObject *}{Get}{\param{const char*}{ key}}
 | |
| 
 | |
| Gets data from the hash table, using an integer or string key (depending on which
 | |
| has table constructor was used).
 | |
| 
 | |
| \membersection{wxHashTable::MakeKey}\label{wxhashtablemakekey}
 | |
| 
 | |
| \func{long}{MakeKey}{\param{const wxString\& }{string}}
 | |
| 
 | |
| Makes an integer key out of a string. An application may wish to make a key
 | |
| explicitly (for instance when combining two data values to form a key).
 | |
| 
 | |
| \membersection{wxHashTable::Next}\label{wxhashtablenext}
 | |
| 
 | |
| \func{wxHashTable::Node *}{Next}{\void}
 | |
| 
 | |
| If the application wishes to iterate through all the data in the hash
 | |
| table, it can call {\it BeginFind} and then loop on {\it Next}. This function
 | |
| returns a {\bf wxHashTable::Node} pointer (or NULL if there are no more nodes).
 | |
| The return value is functionally equivalent to \textbf{wxNode} but might not be
 | |
| implemented as a \textbf{wxNode}. The user will probably only wish to use the
 | |
| \textbf{GetData} method to retrieve the data; the node may also be deleted.
 | |
| 
 | |
| \membersection{wxHashTable::Put}\label{wxhashtableput}
 | |
| 
 | |
| \func{void}{Put}{\param{long}{ key}, \param{wxObject *}{object}}
 | |
| 
 | |
| \func{void}{Put}{\param{const char*}{ key}, \param{wxObject *}{object}}
 | |
| 
 | |
| Inserts data into the hash table, using an integer or string key (depending on which
 | |
| has table constructor was used). The key string is copied and stored by the hash
 | |
| table implementation.
 | |
| 
 | |
| \membersection{wxHashTable::GetCount}\label{wxhashtablegetcount}
 | |
| 
 | |
| \constfunc{size\_t}{GetCount}{\void}
 | |
| 
 | |
| Returns the number of elements in the hash table.
 | |
| 
 |