|
| FlatHashMap () |
|
| FlatHashMap (bslma::Allocator *basicAllocator) |
|
| FlatHashMap (bsl::size_t capacity) |
|
| FlatHashMap (bsl::size_t capacity, bslma::Allocator *basicAllocator) |
|
| FlatHashMap (bsl::size_t capacity, const HASH &hash, bslma::Allocator *basicAllocator=0) |
|
| FlatHashMap (bsl::size_t capacity, const HASH &hash, const EQUAL &equal, bslma::Allocator *basicAllocator=0) |
|
template<class INPUT_ITERATOR > |
| FlatHashMap (INPUT_ITERATOR first, INPUT_ITERATOR last, bslma::Allocator *basicAllocator=0) |
|
template<class INPUT_ITERATOR > |
| FlatHashMap (INPUT_ITERATOR first, INPUT_ITERATOR last, bsl::size_t capacity, bslma::Allocator *basicAllocator=0) |
|
template<class INPUT_ITERATOR > |
| FlatHashMap (INPUT_ITERATOR first, INPUT_ITERATOR last, bsl::size_t capacity, const HASH &hash, bslma::Allocator *basicAllocator=0) |
|
template<class INPUT_ITERATOR > |
| FlatHashMap (INPUT_ITERATOR first, INPUT_ITERATOR last, bsl::size_t capacity, const HASH &hash, const EQUAL &equal, bslma::Allocator *basicAllocator=0) |
|
| FlatHashMap (const FlatHashMap &original, bslma::Allocator *basicAllocator=0) |
|
| FlatHashMap (bslmf::MovableRef< FlatHashMap > original) |
|
| FlatHashMap (bslmf::MovableRef< FlatHashMap > original, bslma::Allocator *basicAllocator) |
|
| ~FlatHashMap () |
| Destroy this object and each of its elements.
|
|
FlatHashMap & | operator= (const FlatHashMap &rhs) |
|
FlatHashMap & | operator= (bslmf::MovableRef< FlatHashMap > rhs) |
|
template<class KEY_TYPE > |
VALUE & | operator[] (BSLS_COMPILERFEATURES_FORWARD_REF(KEY_TYPE) key) |
|
VALUE & | at (const KEY &key) |
|
void | clear () |
|
bsl::pair< iterator, iterator > | equal_range (const KEY &key) |
|
template<class... ARGS> |
bsl::pair< iterator, bool > | emplace (ARGS &&... args) |
|
template<class... ARGS> |
iterator | emplace_hint (const_iterator hint, ARGS &&... args) |
|
bsl::size_t | erase (const KEY &key) |
|
iterator | erase (const_iterator position) |
|
iterator | erase (iterator position) |
|
iterator | erase (const_iterator first, const_iterator last) |
|
iterator | find (const KEY &key) |
|
template<class VALUE_TYPE > |
bsl::enable_if< bsl::is_convertible< VALUE_TYPE, value_type >::value, bsl::pair< iterator, bool > >::type | insert (BSLS_COMPILERFEATURES_FORWARD_REF(VALUE_TYPE) value) |
|
template<class VALUE_TYPE > |
bsl::enable_if< bsl::is_convertible< VALUE_TYPE, value_type >::value, iterator >::type | insert (const_iterator, BSLS_COMPILERFEATURES_FORWARD_REF(VALUE_TYPE) value) |
|
template<class INPUT_ITERATOR > |
void | insert (INPUT_ITERATOR first, INPUT_ITERATOR last) |
|
void | rehash (bsl::size_t minimumCapacity) |
|
void | reserve (bsl::size_t numEntries) |
|
void | reset () |
|
iterator | begin () |
|
iterator | end () |
|
void | swap (FlatHashMap &other) |
|
const VALUE & | at (const KEY &key) const |
|
bsl::size_t | capacity () const |
|
bool | contains (const KEY &key) const |
|
bsl::size_t | count (const KEY &key) const |
|
bool | empty () const |
|
bsl::pair< const_iterator, const_iterator > | equal_range (const KEY &key) const |
|
const_iterator | find (const KEY &key) const |
|
HASH | hash_function () const |
|
EQUAL | key_eq () const |
|
float | load_factor () const |
|
float | max_load_factor () const |
|
bsl::size_t | size () const |
| Return the number of elements in this map.
|
|
const_iterator | begin () const |
|
const_iterator | cbegin () const |
|
const_iterator | cend () const |
|
const_iterator | end () const |
|
bslma::Allocator * | allocator () const |
| Return the allocator used by this flat hash map to supply memory.
|
|
bsl::ostream & | print (bsl::ostream &stream, int level=0, int spacesPerLevel=4) const |
|
template<class... ARGS> |
bsl::pair< typename FlatHashMap< KEY, VALUE, HASH, EQUAL >::iterator, bool > | emplace (ARGS &&... args) |
|
template<class KEY, class VALUE, class HASH, class EQUAL>
class bdlc::FlatHashMap< KEY, VALUE, HASH, EQUAL >
This class template implements a value-semantic container type holding an unordered map of KEY-VALUE
pairs having unique keys that provides a mapping from keys of (template parameter) type KEY
to their associated mapped values of (template parameter) type VALUE
. The (template parameter) type HASH
is a functor providing the hash value for KEY
. The (template parameter) type EQUAL
is a functor providing the equality function for two KEY
values. See {Requirements on KEY
, HASH
, and EQUAL
} for more information.
See bdlc_flathashmap
template<class KEY , class VALUE , class HASH , class EQUAL >
Create an empty FlatHashMap
object. Optionally specify a capacity
indicating the minimum initial size of the underlying array of entries of this container. If capacity
is not supplied or is 0, no memory is allocated. Optionally specify a hash
functor used to generate the hash values associated with the keys of elements in this container. If hash
is not supplied, a default-constructed object of the (template parameter) type HASH
is used. Optionally specify an equality functor equal
used to determine whether the keys of two elements are equivalent. If equal
is not supplied, a default-constructed object of the (template parameter) type EQUAL
is used. Optionally specify a basicAllocator
used to supply memory. If basicAllocator
is not supplied or is 0, the currently installed default allocator is used.
template<class KEY , class VALUE , class HASH , class EQUAL >
template<class INPUT_ITERATOR >
Create a FlatHashMap
object initialized by insertion of the values from the input iterator range specified by first
through last
(including first
, excluding last
). Optionally specify a capacity
indicating the minimum initial size of the underlying array of entries of this container. If capacity
is not supplied or is 0, no memory is allocated. Optionally specify a hash
functor used to generate hash values associated with the keys of the elements in this container. If hash
is not supplied, a default-constructed object of the (template parameter) type HASH
is used. Optionally specify an equality functor equal
used to determine whether the keys of two elements are equivalent. If equal
is not supplied, a default-constructed object of the (template parameter) type EQUAL
is used. Optionally specify a basicAllocator
used to supply memory. If basicAllocator
is not supplied or is 0, the currently installed default allocator is used. The behavior is undefined unless first
and last
refer to a sequence of valid values where first
is at a position at or before last
. Note that if a member of the input sequence has an equivalent key to an earlier member, the later member will not be inserted.
template<class KEY , class VALUE , class HASH , class EQUAL >
Create a FlatHashMap
object having the same value, hasher, equality comparator, and allocator as the specified original
object. The contents of original
are moved (in constant time) to this object, original
is left in a (valid) unspecified state, and no exceptions will be thrown.
template<class KEY , class VALUE , class HASH , class EQUAL >
Create a FlatHashMap
object having the same value, hasher, and equality comparator as the specified original
object, using the specified basicAllocator
to supply memory. If basicAllocator
is 0, the currently installed default allocator is used. The allocator of original
remains unchanged. If original
and the newly created object have the same allocator then the contents of original
are moved (in constant time) to this object, original
is left in a (valid) unspecified state, and no exceptions will be thrown; otherwise, original
is unchanged (and an exception may be thrown).
template<class KEY , class VALUE , class HASH , class EQUAL >
template<class... ARGS>
Insert into this map a newly-created value_type
object, constructed by forwarding get_allocator()
(if required) and the specified (variable number of) args
to the corresponding constructor of value_type
, if a key equivalent to such a value does not already exist in this map; otherwise, this method has no effect (other than possibly creating a temporary value_type
object). Return a pair whose first
member is an iterator referring to the (possibly newly created and inserted) object in this map whose key is equivalent to that of an object constructed from args
, and whose second
member is true
if a new value was inserted, and false
if an equivalent key was already present. This method requires that the (template parameter) types KEY
and VALUE
both be emplace-constructible
from args
(see {Requirements on value_type
}).
template<class KEY , class VALUE , class HASH , class EQUAL >
template<class... ARGS>
Insert into this map a newly-created value_type
object, constructed by forwarding get_allocator()
(if required) and the specified (variable number of) args
to the corresponding constructor of value_type
, if a key equivalent to such a value does not already exist in this map; otherwise, this method has no effect (other than possibly creating a temporary value_type
object). Return an iterator referring to the (possibly newly created and inserted) object in this map whose key is equivalent to that of an object constructed from args
. The average and worst case complexity of this operation is not affected by the specified hint
. This method requires that the (template parameter) types KEY
and VALUE
both be emplace-constructible
from args
(see {Requirements on value_type
}). The behavior is undefined unless hint
is an iterator in the range [begin() .. end()]
(both endpoints included). Note that hint
is ignored (other than possibly asserting its validity in some build modes).
template<class KEY , class VALUE , class HASH , class EQUAL >
bsl::pair< typename FlatHashMap< KEY, VALUE, HASH, EQUAL >::iterator, typename FlatHashMap< KEY, VALUE, HASH, EQUAL >::iterator > bdlc::FlatHashMap< KEY, VALUE, HASH, EQUAL >::equal_range |
( |
const KEY & |
key | ) |
|
Return a pair of iterators defining the sequence of modifiable elements in this map having the specified key
, where the first iterator is positioned at the start of the sequence and the second iterator is positioned one past the end of the sequence. If this map contains no elements having a key equivalent to key
, then the two returned iterators will have the same value. Note that since a map maintains unique keys, the range will contain at most one element.
template<class KEY , class VALUE , class HASH , class EQUAL >
bsl::pair< typename FlatHashMap< KEY, VALUE, HASH, EQUAL >::const_iterator, typename FlatHashMap< KEY, VALUE, HASH, EQUAL >::const_iterator > bdlc::FlatHashMap< KEY, VALUE, HASH, EQUAL >::equal_range |
( |
const KEY & |
key | ) |
const |
Return a pair of const_iterator
s defining the sequence of elements in this map having the specified key
, where the first iterator is positioned at the start of the sequence and the second iterator is positioned one past the end of the sequence. If this map contains no elements having a key equivalent to key
, then the two returned iterators will have the same value. Note that since a map maintains unique keys, the range will contain at most one element.
template<class KEY , class VALUE , class HASH , class EQUAL >
Remove from this map the element whose key is equal to the specified key
, if it exists, and return 1; otherwise (there is no element having key
in this map), return 0 with no other effect. This method invalidates all iterators and references to the removed element.
template<class KEY , class VALUE , class HASH , class EQUAL >
Remove from this map the elements starting at the specified first
position up to, but not including, the specified last
position, and return an iterator referencing the same element as last
. This method invalidates all iterators and references to the removed elements. The behavior is undefined unless first
and last
are valid iterators on this map, and the first
position is at or before the last
position in the iteration sequence provided by this container.
template<class KEY , class VALUE , class HASH , class EQUAL >
Remove from this map the element at the specified position
, and return an iterator referring to the modifiable element immediately following the removed element, or to the past-the-end position if the removed element was the last element in the sequence of elements maintained by this map. This method invalidates all iterators and references to the removed element. The behavior is undefined unless position
refers to an element in this map.
template<class KEY , class VALUE , class HASH , class EQUAL >
template<class INPUT_ITERATOR >
void bdlc::FlatHashMap< KEY, VALUE, HASH, EQUAL >::insert |
( |
INPUT_ITERATOR |
first, |
|
|
INPUT_ITERATOR |
last |
|
) |
| |
Insert into this map the value of each element in the input iterator range specified by first
through last
(including first
, excluding last
). The behavior is undefined unless first
and last
refer to a sequence of valid values where first
is at a position at or before last
. Note that if the key of a member of the input sequence is equivalent to the key of an earlier member, the later member will not be inserted.
template<class KEY , class VALUE , class HASH , class EQUAL >
Assign to this object the value, hasher, and equality comparator of the specified rhs
object, and return a reference providing modifiable access to this object. If this object and rhs
use the same allocator the contents of rhs
are moved (in constant time) to this object. rhs
is left in a (valid) unspecified state.
template<class KEY , class VALUE , class HASH , class EQUAL >
template<class KEY_TYPE >
Return a reference providing modifiable access to the mapped value associated with the specified key
in this map. If this map does not already contain an element having key
, insert an element with the key
and a default-constructed VALUE
, and return a reference to the newly mapped value. If key
is movable, key
is left in a (valid) unspecified state.
template<class KEY , class VALUE , class HASH , class EQUAL >
bsl::ostream & bdlc::FlatHashMap< KEY, VALUE, HASH, EQUAL >::print |
( |
bsl::ostream & |
stream, |
|
|
int |
level = 0 , |
|
|
int |
spacesPerLevel = 4 |
|
) |
| const |
Format this object to the specified output stream
at the (absolute value of) the optionally specified indentation level
, and return a reference to the modifiable stream
. If level
is specified, optionally specify spacesPerLevel
, the number of spaces per indentation level for this and all of its nested objects. If level
is negative, suppress indentation of the first line. If spacesPerLevel
is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by level
). If stream
is not valid on entry, this operation has no effect.
template<class KEY , class VALUE , class HASH , class EQUAL >
void bdlc::FlatHashMap< KEY, VALUE, HASH, EQUAL >::rehash |
( |
bsl::size_t |
minimumCapacity | ) |
|
|
inline |
Change the capacity of this map to at least the specified minimumCapacity
, and redistribute all the contained elements into a new sequence of entries according to their hash values. If 0 == minimumCapacity
and 0 == size()
, the map is returned to the default constructed state. After this call, load_factor()
will be less than or equal to max_load_factor()
and all iterators, pointers, and references to elements of this map are invalidated.
template<class KEY , class VALUE , class HASH , class EQUAL >
Change the capacity of this map to at least a capacity that can accommodate the specified numEntries
(accounting for the load factor invariant), and redistribute all the contained elements into a new sequence of entries according to their hash values. If 0 == numEntries
and 0 == size()
, the map is returned to the default constructed state. After this call, load_factor()
will be less than or equal to max_load_factor()
and all iterators, pointers, and references to elements of this map are invalidated. Note that this method is effectively equivalent to:
void rehash(bsl::size_t minimumCapacity)
Definition bdlc_flathashmap.h:1493
float max_load_factor() const
Definition bdlc_flathashmap.h:1685