Loading...
Searching...
No Matches
TfDenseHashMap< Key, Data, HashFn, EqualKey, Threshold > Class Template Reference

A hash map with contiguous storage, suitable for use with TfSpan, e.g. More...

#include <denseHashMap.h>

Public Types

using key_type = Key
 
using mapped_type = Data
 
using value_type = std::pair<const Key, Data>
 
using pointer = value_type*
 
using const_pointer = const value_type*
 
typedef _IteratorBase< value_type, typename _Vector::iterator > iterator
 An iterator type for this map.
 
typedef _IteratorBase< const value_type, typename _Vector::const_iterator > const_iterator
 An iterator type for this map.
 
typedef std::pair< iterator, bool > insert_result
 Return type for insert() method.
 

Public Member Functions

 TfDenseHashMap (const HashFn &hashFn=HashFn(), const EqualKey &equalKey=EqualKey())
 Ctor.
 
template<class Iterator >
 TfDenseHashMap (Iterator begin, Iterator end)
 Construct with range.
 
 TfDenseHashMap (std::initializer_list< value_type > l)
 Construct from an initializer_list.
 
 TfDenseHashMap (const TfDenseHashMap &rhs)
 Copy Ctor.
 
 TfDenseHashMap (TfDenseHashMap &&rhs)=default
 Move Ctor.
 
TfDenseHashMapoperator= (const TfDenseHashMap &rhs)
 Copy assignment operator.
 
TfDenseHashMapoperator= (TfDenseHashMap &&rhs)=default
 Move assignment operator.
 
TfDenseHashMapoperator= (std::initializer_list< value_type > l)
 Assignment from an initializer_list.
 
bool operator== (const TfDenseHashMap &rhs) const
 Equality operator.
 
bool operator!= (const TfDenseHashMap &rhs) const
 
void clear ()
 Erases all of the elements.
 
void swap (TfDenseHashMap &rhs)
 Swaps the contents of two maps.
 
bool empty () const
 true if the map's size is 0.
 
size_t size () const
 Returns the size of the map.
 
iterator begin ()
 Returns an iterator pointing to the beginning of the map.
 
iterator end ()
 Returns an iterator pointing to the end of the map.
 
const_iterator begin () const
 Returns a const_iterator pointing to the beginning of the map.
 
const_iterator end () const
 Returns a const_iterator pointing to the end of the map.
 
const_iterator cbegin () const
 Returns a const_iterator pointing to the beginning of the map.
 
const_iterator cend () const
 Returns a const_iterator pointing to the end of the map.
 
pointer data ()
 Returns a pointer to the map's data.
 
const_pointer data () const
 Returns a const pointer to the map's data.
 
const_pointer cdata () const
 Returns a const pointer to the map's data.
 
iterator find (const key_type &k)
 Finds the element with key k.
 
const_iterator find (const key_type &k) const
 Finds the element with key k.
 
size_t count (const key_type &k) const
 Returns the number of elements with key k.
 
insert_result insert (const value_type &v)
 Returns a pair of <iterator, bool> where iterator points to the element in the list and bool is true if a new element was inserted.
 
template<class IteratorType >
void insert (IteratorType i0, IteratorType i1)
 Insert a range into the hash map.
 
template<class Iterator >
void insert_unique (Iterator begin, Iterator end)
 Insert a range of unique elements into the container.
 
Data & operator[] (const key_type &key)
 Indexing operator.
 
size_t erase (const key_type &k)
 Erase element with key k.
 
void erase (const iterator &iter)
 Erases element pointed to by iter.
 
void erase (iterator i0, iterator i1)
 Erases a range from the map.
 
void shrink_to_fit ()
 Optimize storage space.
 
void reserve (size_t n)
 Reserve space.
 

Detailed Description

template<class Key, class Data, class HashFn, class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
class TfDenseHashMap< Key, Data, HashFn, EqualKey, Threshold >

A hash map with contiguous storage, suitable for use with TfSpan, e.g.

When the number of elements in the map is small, search operations are done by linear search. When the size surpassees Threshold, a hash table is allocated and used to accelerate lookup.

Note
Inserting and removing elements invalidates iterators.

Definition at line 42 of file denseHashMap.h.

Member Typedef Documentation

◆ const_iterator

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
_IteratorBase<const value_type, typename _Vector::const_iterator> const_iterator

An iterator type for this map.

Note that it provides access to the This::value_type only.

Definition at line 231 of file denseHashMap.h.

◆ const_pointer

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
using const_pointer = const value_type*

Definition at line 50 of file denseHashMap.h.

◆ insert_result

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
std::pair<iterator, bool> insert_result

Return type for insert() method.

Definition at line 234 of file denseHashMap.h.

◆ iterator

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
_IteratorBase<value_type, typename _Vector::iterator> iterator

An iterator type for this map.

Note that it provides access to the This::value_type only.

Definition at line 225 of file denseHashMap.h.

◆ key_type

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
using key_type = Key

Definition at line 46 of file denseHashMap.h.

◆ mapped_type

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
using mapped_type = Data

Definition at line 47 of file denseHashMap.h.

◆ pointer

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
using pointer = value_type*

Definition at line 49 of file denseHashMap.h.

◆ value_type

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
using value_type = std::pair<const Key, Data>

Definition at line 48 of file denseHashMap.h.

Constructor & Destructor Documentation

◆ TfDenseHashMap() [1/5]

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
TfDenseHashMap ( const HashFn & hashFn = HashFn(),
const EqualKey & equalKey = EqualKey() )
inlineexplicit

Ctor.

Definition at line 240 of file denseHashMap.h.

◆ TfDenseHashMap() [2/5]

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
template<class Iterator >
TfDenseHashMap ( Iterator begin,
Iterator end )
inline

Construct with range.

Definition at line 251 of file denseHashMap.h.

◆ TfDenseHashMap() [3/5]

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
TfDenseHashMap ( std::initializer_list< value_type > l)
inline

Construct from an initializer_list.

Definition at line 257 of file denseHashMap.h.

◆ TfDenseHashMap() [4/5]

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
TfDenseHashMap ( const TfDenseHashMap< Key, Data, HashFn, EqualKey, Threshold > & rhs)
inline

Copy Ctor.

Definition at line 263 of file denseHashMap.h.

◆ TfDenseHashMap() [5/5]

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
TfDenseHashMap ( TfDenseHashMap< Key, Data, HashFn, EqualKey, Threshold > && rhs)
default

Move Ctor.

Member Function Documentation

◆ begin() [1/2]

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
iterator begin ( )
inline

Returns an iterator pointing to the beginning of the map.

Definition at line 348 of file denseHashMap.h.

◆ begin() [2/2]

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
const_iterator begin ( ) const
inline

Returns a const_iterator pointing to the beginning of the map.

Definition at line 360 of file denseHashMap.h.

◆ cbegin()

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
const_iterator cbegin ( ) const
inline

Returns a const_iterator pointing to the beginning of the map.

Definition at line 372 of file denseHashMap.h.

◆ cdata()

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
const_pointer cdata ( ) const
inline

Returns a const pointer to the map's data.

Definition at line 396 of file denseHashMap.h.

◆ cend()

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
const_iterator cend ( ) const
inline

Returns a const_iterator pointing to the end of the map.

Definition at line 378 of file denseHashMap.h.

◆ clear()

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
void clear ( )
inline

Erases all of the elements.

Definition at line 322 of file denseHashMap.h.

◆ count()

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
size_t count ( const key_type & k) const
inline

Returns the number of elements with key k.

Which is either 0 or 1.

Definition at line 430 of file denseHashMap.h.

◆ data() [1/2]

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
pointer data ( )
inline

Returns a pointer to the map's data.

Definition at line 384 of file denseHashMap.h.

◆ data() [2/2]

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
const_pointer data ( ) const
inline

Returns a const pointer to the map's data.

Definition at line 390 of file denseHashMap.h.

◆ empty()

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
bool empty ( ) const
inline

true if the map's size is 0.

Definition at line 336 of file denseHashMap.h.

◆ end() [1/2]

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
iterator end ( )
inline

Returns an iterator pointing to the end of the map.

Definition at line 354 of file denseHashMap.h.

◆ end() [2/2]

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
const_iterator end ( ) const
inline

Returns a const_iterator pointing to the end of the map.

Definition at line 366 of file denseHashMap.h.

◆ erase() [1/3]

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
void erase ( const iterator & iter)
inline

Erases element pointed to by iter.

Definition at line 515 of file denseHashMap.h.

◆ erase() [2/3]

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
size_t erase ( const key_type & k)
inline

Erase element with key k.

Returns the number of elements erased.

Definition at line 503 of file denseHashMap.h.

◆ erase() [3/3]

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
void erase ( iterator i0,
iterator i1 )
inline

Erases a range from the map.

Definition at line 541 of file denseHashMap.h.

◆ find() [1/2]

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
iterator find ( const key_type & k)
inline

Finds the element with key k.

Definition at line 402 of file denseHashMap.h.

◆ find() [2/2]

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
const_iterator find ( const key_type & k) const
inline

Finds the element with key k.

Definition at line 416 of file denseHashMap.h.

◆ insert() [1/2]

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
insert_result insert ( const value_type & v)
inline

Returns a pair of <iterator, bool> where iterator points to the element in the list and bool is true if a new element was inserted.

Definition at line 437 of file denseHashMap.h.

◆ insert() [2/2]

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
template<class IteratorType >
void insert ( IteratorType i0,
IteratorType i1 )
inline

Insert a range into the hash map.

Note that i0 and i1 can't point into the hash map.

Definition at line 464 of file denseHashMap.h.

◆ insert_unique()

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
template<class Iterator >
void insert_unique ( Iterator begin,
Iterator end )
inline

Insert a range of unique elements into the container.

[begin, end) must not contain any duplicate elements.

Definition at line 481 of file denseHashMap.h.

◆ operator!=()

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
bool operator!= ( const TfDenseHashMap< Key, Data, HashFn, EqualKey, Threshold > & rhs) const
inline

Definition at line 316 of file denseHashMap.h.

◆ operator=() [1/3]

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
TfDenseHashMap & operator= ( const TfDenseHashMap< Key, Data, HashFn, EqualKey, Threshold > & rhs)
inline

Copy assignment operator.

Definition at line 275 of file denseHashMap.h.

◆ operator=() [2/3]

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
TfDenseHashMap & operator= ( std::initializer_list< value_type > l)
inline

Assignment from an initializer_list.

Definition at line 289 of file denseHashMap.h.

◆ operator=() [3/3]

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
TfDenseHashMap & operator= ( TfDenseHashMap< Key, Data, HashFn, EqualKey, Threshold > && rhs)
default

Move assignment operator.

◆ operator==()

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
bool operator== ( const TfDenseHashMap< Key, Data, HashFn, EqualKey, Threshold > & rhs) const
inline

Equality operator.

Definition at line 297 of file denseHashMap.h.

◆ operator[]()

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
Data & operator[] ( const key_type & key)
inline

Indexing operator.

Inserts a default constructed DataType() for key if there is no value for key already.

Returns a reference to the value type for key.

Definition at line 497 of file denseHashMap.h.

◆ reserve()

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
void reserve ( size_t n)
inline

Reserve space.

Definition at line 585 of file denseHashMap.h.

◆ shrink_to_fit()

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
void shrink_to_fit ( )
inline

Optimize storage space.

Definition at line 559 of file denseHashMap.h.

◆ size()

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
size_t size ( ) const
inline

Returns the size of the map.

Definition at line 342 of file denseHashMap.h.

◆ swap()

template<class Key , class Data , class HashFn , class EqualKey = std::equal_to<Key>, unsigned Threshold = 128>
void swap ( TfDenseHashMap< Key, Data, HashFn, EqualKey, Threshold > & rhs)
inline

Swaps the contents of two maps.

Definition at line 329 of file denseHashMap.h.


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