Loading...
Searching...
No Matches
juce::HashMap< KeyType, ValueType, HashFunctionType, TypeOfCriticalSectionToUse > Class Template Reference

`#include <juce_HashMap.h>`

## Classes

struct | Iterator

## Public Types

using | ScopedLockType = typename TypeOfCriticalSectionToUse::ScopedLockType

## Public Member Functions

| HashMap (int numberOfSlots=defaultHashTableSize, HashFunctionType hashFunction=HashFunctionType())
| ~HashMap ()
void | clear ()
int | size () const noexcept
ValueType | operator[] (KeyTypeParameter keyToLookFor) const
ValueType & | getReference (KeyTypeParameter keyToLookFor)
bool | contains (KeyTypeParameter keyToLookFor) const
bool | containsValue (ValueTypeParameter valueToLookFor) const
void | set (KeyTypeParameter newKey, ValueTypeParameter newValue)
void | remove (KeyTypeParameter keyToRemove)
void | removeValue (ValueTypeParameter valueToRemove)
void | remapTable (int newNumberOfSlots)
int | getNumSlots () const noexcept
template<class OtherHashMapType>
void | swapWith (OtherHashMapType &otherHashMap) noexcept
const TypeOfCriticalSectionToUse & | getLock () const noexcept
Iterator | begin () const noexcept
Iterator | end () const noexcept

## Detailed Description

template<typename KeyType, typename ValueType, class HashFunctionType = DefaultHashFunctions, class TypeOfCriticalSectionToUse = DummyCriticalSection>
class juce::HashMap< KeyType, ValueType, HashFunctionType, TypeOfCriticalSectionToUse >

Holds a set of mappings between some key/value pairs.

The types of the key and value objects are set as template parameters. You can also specify a class to supply a hash function that converts a key value into an hashed integer. This class must have the form:

struct MyHashGenerator
{
int generateHash (MyKeyType key, int upperLimit) const
{
// The function must return a value 0 <= x < upperLimit
return someFunctionOfMyKeyType (key) % upperLimit;
}
};

Like the Array class, the key and value types are expected to be copy-by-value types, so if you define them to be pointer types, this class won't delete the objects that they point to.

If you don't supply a class for the HashFunctionType template parameter, the default one provides some simple mappings for strings and ints.

HashMap<int, String> hash;
hash.set (1, "item1");
hash.set (2, "item2");
DBG (hash [1]); // prints "item1"
DBG (hash [2]); // prints "item2"
// This iterates the map, printing all of its key -> value pairs..
for (HashMap<int, String>::Iterator i (hash); i.next();)
DBG (i.getKey() << " -> " << i.getValue());
juce::HashMap::set
void set(KeyTypeParameter newKey, ValueTypeParameter newValue)
Definition juce_HashMap.h:232
juce::HashMap::HashMap
HashMap(int numberOfSlots=defaultHashTableSize, HashFunctionType hashFunction=HashFunctionType())
Definition juce_HashMap.h:121
juce::HashMap::Iterator
Definition juce_HashMap.h:400
juce::HashMap::Iterator::next
bool next() noexcept
Definition juce_HashMap.h:413

Template Parameters

  HashFunctionType | The class of hash function, which must be copy-constructible.

See also
  CriticalSection, DefaultHashFunctions, NamedValueSet, SortedSet

Definition at line 103 of file juce_HashMap.h.

## Member Typedef Documentation

## ScopedLockType

template<typename KeyType, typename ValueType, class HashFunctionType = DefaultHashFunctions, class TypeOfCriticalSectionToUse = DummyCriticalSection>

using juce::HashMap< KeyType, ValueType, HashFunctionType, TypeOfCriticalSectionToUse >::ScopedLockType = typename TypeOfCriticalSectionToUse::ScopedLockType

Returns the type of scoped lock to use for locking this array

Definition at line 357 of file juce_HashMap.h.

## Constructor & Destructor Documentation

## HashMap()

template<typename KeyType, typename ValueType, class HashFunctionType = DefaultHashFunctions, class TypeOfCriticalSectionToUse = DummyCriticalSection>

juce::HashMap< KeyType, ValueType, HashFunctionType, TypeOfCriticalSectionToUse >::HashMap | ( | int | numberOfSlots = defaultHashTableSize,
|  | HashFunctionType | hashFunction = HashFunctionType() )

inline explicit

Creates an empty hash-map.

Parameters

  numberOfSlots | Specifies the number of hash entries the map will use. This will be the "upperLimit" parameter that is passed to your generateHash() function. The number of hash slots will grow automatically if necessary, or it can be remapped manually using remapTable().
  hashFunction | An instance of HashFunctionType, which will be copied and stored to use with the HashMap. This parameter can be omitted if HashFunctionType has a default constructor.

Definition at line 121 of file juce_HashMap.h.

## ~HashMap()

template<typename KeyType, typename ValueType, class HashFunctionType = DefaultHashFunctions, class TypeOfCriticalSectionToUse = DummyCriticalSection>

juce::HashMap< KeyType, ValueType, HashFunctionType, TypeOfCriticalSectionToUse >::~HashMap | ( |  | ) |

inline

Destructor.

Definition at line 129 of file juce_HashMap.h.

## Member Function Documentation

## begin()

template<typename KeyType, typename ValueType, class HashFunctionType = DefaultHashFunctions, class TypeOfCriticalSectionToUse = DummyCriticalSection>

Iterator juce::HashMap< KeyType, ValueType, HashFunctionType, TypeOfCriticalSectionToUse >::begin | ( |  | ) | const

inline noexcept

Returns a start iterator for the values in this tree.

Definition at line 470 of file juce_HashMap.h.

## clear()

template<typename KeyType, typename ValueType, class HashFunctionType = DefaultHashFunctions, class TypeOfCriticalSectionToUse = DummyCriticalSection>

void juce::HashMap< KeyType, ValueType, HashFunctionType, TypeOfCriticalSectionToUse >::clear | ( |  | ) |

inline

Removes all values from the map. Note that this will clear the content, but won't affect the number of slots (see remapTable and getNumSlots).

Definition at line 139 of file juce_HashMap.h.

Referenced by ~HashMap().

## contains()

template<typename KeyType, typename ValueType, class HashFunctionType = DefaultHashFunctions, class TypeOfCriticalSectionToUse = DummyCriticalSection>

bool juce::HashMap< KeyType, ValueType, HashFunctionType, TypeOfCriticalSectionToUse >::contains | ( | KeyTypeParameter | keyToLookFor | ) | const

inline

Returns true if the map contains an item with the specified key.

Definition at line 207 of file juce_HashMap.h.

## containsValue()

template<typename KeyType, typename ValueType, class HashFunctionType = DefaultHashFunctions, class TypeOfCriticalSectionToUse = DummyCriticalSection>

bool juce::HashMap< KeyType, ValueType, HashFunctionType, TypeOfCriticalSectionToUse >::containsValue | ( | ValueTypeParameter | valueToLookFor | ) | const

inline

Returns true if the hash contains at least one occurrence of a given value.

Definition at line 215 of file juce_HashMap.h.

## end()

template<typename KeyType, typename ValueType, class HashFunctionType = DefaultHashFunctions, class TypeOfCriticalSectionToUse = DummyCriticalSection>

Iterator juce::HashMap< KeyType, ValueType, HashFunctionType, TypeOfCriticalSectionToUse >::end | ( |  | ) | const

inline noexcept

Returns an end iterator for the values in this tree.

Definition at line 473 of file juce_HashMap.h.

## getLock()

template<typename KeyType, typename ValueType, class HashFunctionType = DefaultHashFunctions, class TypeOfCriticalSectionToUse = DummyCriticalSection>

const TypeOfCriticalSectionToUse & juce::HashMap< KeyType, ValueType, HashFunctionType, TypeOfCriticalSectionToUse >::getLock | ( |  | ) | const

inline noexcept

Returns the CriticalSection that locks this structure. To lock, you can call getLock().enter() and getLock().exit(), or preferably use an object of ScopedLockType as an RAII lock for it.

Definition at line 354 of file juce_HashMap.h.

Referenced by clear(), contains(), containsValue(), getReference(), operator[](), remapTable(), remove(), removeValue(), and swapWith().

## getNumSlots()

template<typename KeyType, typename ValueType, class HashFunctionType = DefaultHashFunctions, class TypeOfCriticalSectionToUse = DummyCriticalSection>

int juce::HashMap< KeyType, ValueType, HashFunctionType, TypeOfCriticalSectionToUse >::getNumSlots | ( |  | ) | const

inline noexcept

Returns the number of slots which are available for hashing. Each slot corresponds to a single hash-code, and each one can contain multiple items.

See also
  getNumSlots()

Definition at line 332 of file juce_HashMap.h.

Referenced by containsValue(), getReference(), remapTable(), remove(), and removeValue().

## getReference()

template<typename KeyType, typename ValueType, class HashFunctionType = DefaultHashFunctions, class TypeOfCriticalSectionToUse = DummyCriticalSection>

ValueType & juce::HashMap< KeyType, ValueType, HashFunctionType, TypeOfCriticalSectionToUse >::getReference | ( | KeyTypeParameter | keyToLookFor | ) |

inline

Returns a reference to the value corresponding to a given key. If the map doesn't contain the key, a default instance of the value type is added to the map and a reference to this is returned.

Parameters

  keyToLookFor | the key of the item being requested

Definition at line 185 of file juce_HashMap.h.

Referenced by set().

## operator[]()

template<typename KeyType, typename ValueType, class HashFunctionType = DefaultHashFunctions, class TypeOfCriticalSectionToUse = DummyCriticalSection>

ValueType juce::HashMap< KeyType, ValueType, HashFunctionType, TypeOfCriticalSectionToUse >::operator[] | ( | KeyTypeParameter | keyToLookFor | ) | const

inline

Returns the value corresponding to a given key. If the map doesn't contain the key, a default instance of the value type is returned.

Parameters

  keyToLookFor | the key of the item being requested

Definition at line 170 of file juce_HashMap.h.

## remapTable()

template<typename KeyType, typename ValueType, class HashFunctionType = DefaultHashFunctions, class TypeOfCriticalSectionToUse = DummyCriticalSection>

void juce::HashMap< KeyType, ValueType, HashFunctionType, TypeOfCriticalSectionToUse >::remapTable | ( | int | newNumberOfSlots | ) |

inline

Remaps the hash-map to use a different number of slots for its hash function. Each slot corresponds to a single hash-code, and each one can contain multiple items.

See also
  getNumSlots()

Definition at line 303 of file juce_HashMap.h.

Referenced by getReference().

## remove()

template<typename KeyType, typename ValueType, class HashFunctionType = DefaultHashFunctions, class TypeOfCriticalSectionToUse = DummyCriticalSection>

void juce::HashMap< KeyType, ValueType, HashFunctionType, TypeOfCriticalSectionToUse >::remove | ( | KeyTypeParameter | keyToRemove | ) |

inline

Removes an item with the given key.

Definition at line 235 of file juce_HashMap.h.

## removeValue()

template<typename KeyType, typename ValueType, class HashFunctionType = DefaultHashFunctions, class TypeOfCriticalSectionToUse = DummyCriticalSection>

void juce::HashMap< KeyType, ValueType, HashFunctionType, TypeOfCriticalSectionToUse >::removeValue | ( | ValueTypeParameter | valueToRemove | ) |

inline

Removes all items with the given value.

Definition at line 266 of file juce_HashMap.h.

## set()

template<typename KeyType, typename ValueType, class HashFunctionType = DefaultHashFunctions, class TypeOfCriticalSectionToUse = DummyCriticalSection>

void juce::HashMap< KeyType, ValueType, HashFunctionType, TypeOfCriticalSectionToUse >::set | ( | KeyTypeParameter | newKey,
|  | ValueTypeParameter | newValue )

inline

Adds or replaces an element in the hash-map. If there's already an item with the given key, this will replace its value. Otherwise, a new item will be added to the map.

Definition at line 232 of file juce_HashMap.h.

## size()

template<typename KeyType, typename ValueType, class HashFunctionType = DefaultHashFunctions, class TypeOfCriticalSectionToUse = DummyCriticalSection>

int juce::HashMap< KeyType, ValueType, HashFunctionType, TypeOfCriticalSectionToUse >::size | ( |  | ) | const

inline noexcept

Returns the current number of items in the map.

Definition at line 161 of file juce_HashMap.h.

## swapWith()

template<typename KeyType, typename ValueType, class HashFunctionType = DefaultHashFunctions, class TypeOfCriticalSectionToUse = DummyCriticalSection>
template<class OtherHashMapType>

void juce::HashMap< KeyType, ValueType, HashFunctionType, TypeOfCriticalSectionToUse >::swapWith | ( | OtherHashMapType & | otherHashMap | ) |

inline noexcept

Efficiently swaps the contents of two hash-maps.

Definition at line 340 of file juce_HashMap.h.

The documentation for this class was generated from the following file:

- juce_HashMap.h