csHash< T, K, KeyHandler > Class Template Reference
A generic hash table class, which grows dynamically and whose buckets are unsorted arrays. More...
#include <hash.h>
Inheritance diagram for csHash< T, K, KeyHandler >:

Public Methods | |
csHash (int size=257, int grow_rate=64, int max_size=20000) | |
Construct a hash table with an array of the given size, which for optimisation reasons should be a prime number. | |
csHash (const csHash< T > &o) | |
Copy constructor. | |
void | Put (const K &key, const T &value) |
Add an element to the hash table. | |
csArray< T > | GetAll (const K &key) const |
Get all the elements with the given key, or empty if there are none. | |
void | PutFirst (const K &key, const T &value) |
Add an element to the hash table, overwriting if the key already exists. | |
bool | In (const K &key) const |
Returns whether at least one element matches the given key. | |
const T * | GetElementPointer (const K &key) const |
Get a pointer to the first element matching the given key, or 0 if there is none. | |
T * | GetElementPointer (const K &key) |
Get a pointer to the first element matching the given key, or 0 if there is none. | |
const T & | Get (const K &key, const T &fallback) const |
Get the first element matching the given key, or fallback if there is none. | |
T & | Get (const K &key, T &fallback) |
Get the first element matching the given key, or fallback if there is none. | |
void | DeleteAll () |
Delete all the elements. | |
bool | DeleteAll (const K &key) |
Delete all the elements matching the given key. | |
bool | Delete (const K &key, const T &value) |
Delete all the elements matching the given key and value. | |
int | GetSize () const |
Get the number of elements in the hash. | |
void | DeleteElement (GlobalIterator iterator) |
Delete the element pointed by the iterator. | |
Iterator | GetIterator (const K &key) const |
Return an iterator for the hash, to iterate only over the elements with the given key. | |
GlobalIterator | GetIterator () const |
Return an iterator for the hash, to iterate over all elements. |
Detailed Description
template<class T, class K = unsigned int, class KeyHandler = csIntegralHashKeyHandler<K>>
class csHash< T, K, KeyHandler >
A generic hash table class, which grows dynamically and whose buckets are unsorted arrays.
Definition at line 65 of file hash.h.
Constructor & Destructor Documentation
|
Construct a hash table with an array of the given size, which for optimisation reasons should be a prime number. Grow_rate is the rate at which the hash table grows: Size doubles once there are size/grow_rate collisions. It will not grow after it reaches max_size. Here are a few primes: 7, 11, 19, 29, 59, 79, 101, 127, 151, 199, 251, 307, 401, 503, 809, 1009, 1499, 2003, 3001, 5003, 12263, 25247, 36923, 50119, 70951, 90313, 104707. For a bigger list go to http://www.utm.edu/research/primes/ |
|
Copy constructor.
|
Member Function Documentation
|
Delete all the elements matching the given key and value.
Definition at line 315 of file hash.h. Referenced by csSet< T, KeyHandler >::Delete(). |
|
Delete all the elements matching the given key.
|
|
Delete all the elements.
Definition at line 289 of file hash.h. Referenced by csSet< T, KeyHandler >::DeleteAll(). |
|
Delete the element pointed by the iterator. This is safe for this iterator, not for the others. |
|
Get the first element matching the given key, or
|
|
Get the first element matching the given key, or
|
|
Get all the elements with the given key, or empty if there are none.
|
|
Get a pointer to the first element matching the given key, or 0 if there is none.
|
|
Get a pointer to the first element matching the given key, or 0 if there is none.
|
|
Return an iterator for the hash, to iterate over all elements. Modifying the hash (except with DeleteElement) while you have open iterators will cause undefined behaviour. |
|
Return an iterator for the hash, to iterate only over the elements with the given key. Modifying the hash (except with DeleteElement) while you have open iterators will cause undefined behaviour. |
|
Get the number of elements in the hash.
Definition at line 332 of file hash.h. Referenced by csSet< T, KeyHandler >::GetSize(). |
|
Returns whether at least one element matches the given key.
Definition at line 200 of file hash.h. Referenced by csSet< T, KeyHandler >::In(). |
|
Add an element to the hash table.
Reimplemented in csHashReversible< T, K, KeyHandler, ReverseKeyHandler >. Definition at line 151 of file hash.h. Referenced by csSet< T, KeyHandler >::AddNoTest(), and csHashReversible< T, K, KeyHandler, ReverseKeyHandler >::Put(). |
|
Add an element to the hash table, overwriting if the key already exists.
|
The documentation for this class was generated from the following file:
- csutil/hash.h
Generated for Crystal Space by doxygen 1.2.18