Loading...
Searching...
No Matches
TfDenseHashSet< Element, HashFn, EqualElement, Threshold > Class Template Reference

This is a space efficient container that mimics the TfHashSet API that uses a vector for storage when the size of the set is small. More...

#include <denseHashSet.h>

Public Types

typedef Element value_type
 
typedef _Vector::const_iterator iterator
 An iterator type for this set.
 
typedef _Vector::const_iterator const_iterator
 A const_iterator type for this set.
 
typedef std::pair< const_iterator, bool > insert_result
 Return type for insert() method.
 

Public Member Functions

 TfDenseHashSet (const HashFn &hashFn=HashFn(), const EqualElement &equalElement=EqualElement())
 Ctor.
 
 TfDenseHashSet (const TfDenseHashSet &rhs)
 Copy Ctor.
 
 TfDenseHashSet (TfDenseHashSet &&rhs)=default
 Move Ctor.
 
template<class Iterator >
 TfDenseHashSet (Iterator begin, Iterator end)
 Construct from range.
 
 TfDenseHashSet (std::initializer_list< Element > l)
 Construct from an initializer_list.
 
TfDenseHashSetoperator= (const TfDenseHashSet &rhs)
 Copy assignment operator.
 
TfDenseHashSetoperator= (TfDenseHashSet &&rhs)=default
 Move assignment operator.
 
TfDenseHashSetoperator= (std::initializer_list< Element > l)
 Assignment from an initializer_list.
 
bool operator== (const TfDenseHashSet &rhs) const
 Equality operator.
 
bool operator!= (const TfDenseHashSet &rhs) const
 
void clear ()
 Erases all of the elements.
 
void swap (TfDenseHashSet &rhs)
 Swaps the contents of two sets.
 
bool empty () const
 true if the set's size is 0.
 
size_t size () const
 Returns the size of the set.
 
const_iterator begin () const
 Returns an const_iterator pointing to the beginning of the set.
 
const_iterator end () const
 Returns an const_iterator pointing to the end of the set.
 
const_iterator find (const Element &k) const
 Finds the element with key k.
 
size_t count (const Element &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 set.
 
template<class Iterator >
void insert_unique (Iterator begin, Iterator end)
 Insert a range of unique elements into the container.
 
size_t erase (const Element &k)
 Erase element with key k.
 
void erase (const iterator &iter)
 Erases element pointed to by iter.
 
void erase (const iterator &i0, const iterator &i1)
 Erases a range from the set.
 
void shrink_to_fit ()
 Optimize storage space.
 
const Element & operator[] (size_t index) const
 Index into set via index.
 

Detailed Description

template<class Element, class HashFn, class EqualElement = std::equal_to<Element>, unsigned Threshold = 128>
class TfDenseHashSet< Element, HashFn, EqualElement, Threshold >

This is a space efficient container that mimics the TfHashSet API that uses a vector for storage when the size of the set is small.

When the set gets bigger than Threshold a TfHashMap is allocated that is used to accelerate lookup in the vector.

Warning
This differs from a TfHashSet in so far that inserting and removing elements invalidate all iterators of the container.

Definition at line 55 of file denseHashSet.h.

Member Typedef Documentation

◆ const_iterator

typedef _Vector::const_iterator const_iterator

A const_iterator type for this set.

Definition at line 81 of file denseHashSet.h.

◆ insert_result

typedef std::pair<const_iterator, bool> insert_result

Return type for insert() method.

Definition at line 84 of file denseHashSet.h.

◆ iterator

typedef _Vector::const_iterator iterator

An iterator type for this set.

Note that this one is const as well, as we can't allow in-place modification of elements due to the potentially allocated hash map.

Definition at line 78 of file denseHashSet.h.

◆ value_type

typedef Element value_type

Definition at line 59 of file denseHashSet.h.

Constructor & Destructor Documentation

◆ TfDenseHashSet() [1/5]

TfDenseHashSet ( const HashFn &  hashFn = HashFn(),
const EqualElement &  equalElement = EqualElement() 
)
inlineexplicit

Ctor.

Definition at line 90 of file denseHashSet.h.

◆ TfDenseHashSet() [2/5]

TfDenseHashSet ( const TfDenseHashSet< Element, HashFn, EqualElement, Threshold > &  rhs)
inline

Copy Ctor.

Definition at line 100 of file denseHashSet.h.

◆ TfDenseHashSet() [3/5]

TfDenseHashSet ( TfDenseHashSet< Element, HashFn, EqualElement, Threshold > &&  rhs)
default

Move Ctor.

◆ TfDenseHashSet() [4/5]

TfDenseHashSet ( Iterator  begin,
Iterator  end 
)
inline

Construct from range.

Definition at line 114 of file denseHashSet.h.

◆ TfDenseHashSet() [5/5]

TfDenseHashSet ( std::initializer_list< Element >  l)
inline

Construct from an initializer_list.

Definition at line 120 of file denseHashSet.h.

Member Function Documentation

◆ begin()

const_iterator begin ( ) const
inline

Returns an const_iterator pointing to the beginning of the set.

Definition at line 196 of file denseHashSet.h.

◆ clear()

void clear ( )
inline

Erases all of the elements.

Definition at line 170 of file denseHashSet.h.

◆ count()

size_t count ( const Element &  k) const
inline

Returns the number of elements with key k.

Which is either 0 or 1.

Definition at line 229 of file denseHashSet.h.

◆ empty()

bool empty ( ) const
inline

true if the set's size is 0.

Definition at line 184 of file denseHashSet.h.

◆ end()

const_iterator end ( ) const
inline

Returns an const_iterator pointing to the end of the set.

Definition at line 202 of file denseHashSet.h.

◆ erase() [1/3]

size_t erase ( const Element &  k)
inline

Erase element with key k.

Returns the number of elements erased.

Definition at line 298 of file denseHashSet.h.

◆ erase() [2/3]

void erase ( const iterator i0,
const iterator i1 
)
inline

Erases a range from the set.

Definition at line 335 of file denseHashSet.h.

◆ erase() [3/3]

void erase ( const iterator iter)
inline

Erases element pointed to by iter.

Definition at line 310 of file denseHashSet.h.

◆ find()

const_iterator find ( const Element &  k) const
inline

Finds the element with key k.

Definition at line 208 of file denseHashSet.h.

◆ insert() [1/2]

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 236 of file denseHashSet.h.

◆ insert() [2/2]

void insert ( IteratorType  i0,
IteratorType  i1 
)
inline

Insert a range into the hash set.

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

Definition at line 268 of file denseHashSet.h.

◆ insert_unique()

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 285 of file denseHashSet.h.

◆ operator!=()

bool operator!= ( const TfDenseHashSet< Element, HashFn, EqualElement, Threshold > &  rhs) const
inline

Definition at line 164 of file denseHashSet.h.

◆ operator=() [1/3]

TfDenseHashSet & operator= ( const TfDenseHashSet< Element, HashFn, EqualElement, Threshold > &  rhs)
inline

Copy assignment operator.

Definition at line 126 of file denseHashSet.h.

◆ operator=() [2/3]

TfDenseHashSet & operator= ( std::initializer_list< Element >  l)
inline

Assignment from an initializer_list.

Definition at line 140 of file denseHashSet.h.

◆ operator=() [3/3]

TfDenseHashSet & operator= ( TfDenseHashSet< Element, HashFn, EqualElement, Threshold > &&  rhs)
default

Move assignment operator.

◆ operator==()

bool operator== ( const TfDenseHashSet< Element, HashFn, EqualElement, Threshold > &  rhs) const
inline

Equality operator.

Definition at line 148 of file denseHashSet.h.

◆ operator[]()

const Element & operator[] ( size_t  index) const
inline

Index into set via index.

Definition at line 378 of file denseHashSet.h.

◆ shrink_to_fit()

void shrink_to_fit ( )
inline

Optimize storage space.

Definition at line 352 of file denseHashSet.h.

◆ size()

size_t size ( ) const
inline

Returns the size of the set.

Definition at line 190 of file denseHashSet.h.

◆ swap()

void swap ( TfDenseHashSet< Element, HashFn, EqualElement, Threshold > &  rhs)
inline

Swaps the contents of two sets.

Definition at line 177 of file denseHashSet.h.


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