[#BloombergLP-bdlc-FlatHashMap] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdlc.adoc[bdlc]::FlatHashMap :relfileprefix: ../../ :mrdocs: 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. == Synopsis Declared in `<bdlc_flathashmap.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< class KEY, class VALUE, class HASH = xref:BloombergLP/bslh/FibonacciBadHashWrapper.adoc[bslh::FibonacciBadHashWrapper<bsl::hash<KEY>>], class EQUAL = xref:bsl/equal_to-0d.adoc[bsl::equal_to<KEY>]> class FlatHashMap; ---- == Type Aliases [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bdlc/FlatHashMap/const_iterator.adoc[`const_iterator`] | Iterator over non‐modifiable elements. | xref:BloombergLP/bdlc/FlatHashMap/const_pointer.adoc[`const_pointer`] | Pointer to a non‐modifiable value. | xref:BloombergLP/bdlc/FlatHashMap/const_reference.adoc[`const_reference`] | Reference to a non‐modifiable value. | xref:BloombergLP/bdlc/FlatHashMap/difference_type.adoc[`difference_type`] | Signed type used for iterator distances. | xref:BloombergLP/bdlc/FlatHashMap/hasher.adoc[`hasher`] | Hash functor type. | xref:BloombergLP/bdlc/FlatHashMap/iterator.adoc[`iterator`] | Iterator over modifiable elements. | xref:BloombergLP/bdlc/FlatHashMap/key_compare.adoc[`key_compare`] | Key equality predicate type. | xref:BloombergLP/bdlc/FlatHashMap/key_type.adoc[`key_type`] | Key type of this map. | xref:BloombergLP/bdlc/FlatHashMap/mapped_type.adoc[`mapped_type`] | Mapped value type of this map. | xref:BloombergLP/bdlc/FlatHashMap/pointer.adoc[`pointer`] | Pointer to a modifiable value. | xref:BloombergLP/bdlc/FlatHashMap/reference.adoc[`reference`] | Reference to a modifiable value. | xref:BloombergLP/bdlc/FlatHashMap/size_type.adoc[`size_type`] | Unsigned type used for sizes and capacities. | xref:BloombergLP/bdlc/FlatHashMap/value_type.adoc[`value_type`] | Key/value pair type stored by this map. |=== == Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bdlc/FlatHashMap/2constructor-056.adoc[`FlatHashMap`] [.small]#[constructor]# | Constructors | xref:BloombergLP/bdlc/FlatHashMap/2destructor.adoc[`~FlatHashMap`] [.small]#[destructor]# | Destroy this object and each of its elements. | xref:BloombergLP/bdlc/FlatHashMap/operator_assign-04.adoc[`operator=`] | Assignment operators | xref:BloombergLP/bdlc/FlatHashMap/allocator.adoc[`allocator`] | Return the allocator used by this flat hash map to supply memory. | xref:BloombergLP/bdlc/FlatHashMap/at-09.adoc[`at`] | `at` overloads | xref:BloombergLP/bdlc/FlatHashMap/begin-06.adoc[`begin`] | `begin` overloads | xref:BloombergLP/bdlc/FlatHashMap/capacity.adoc[`capacity`] | Return the number of elements this map could hold if the load factor were 1. | xref:BloombergLP/bdlc/FlatHashMap/cbegin.adoc[`cbegin`] | Return a `const_iterator` to the first element in the sequence of elements maintained by this map, or the `end` iterator if this map is empty. | xref:BloombergLP/bdlc/FlatHashMap/cend.adoc[`cend`] | Return a `const_iterator` to the past‐the‐end element in the sequence of elements maintained by this map. | xref:BloombergLP/bdlc/FlatHashMap/clear.adoc[`clear`] | Remove all elements from this map. Note that this map will be empty after calling this method, but allocated memory may be retained for future use. See the `capacity` method. | xref:BloombergLP/bdlc/FlatHashMap/contains-09.adoc[`contains`] | `contains` overloads | xref:BloombergLP/bdlc/FlatHashMap/count-0d.adoc[`count`] | `count` overloads | xref:BloombergLP/bdlc/FlatHashMap/emplace.adoc[`emplace`] | 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`}). | xref:BloombergLP/bdlc/FlatHashMap/emplace_hint.adoc[`emplace_hint`] | 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). | xref:BloombergLP/bdlc/FlatHashMap/empty.adoc[`empty`] | Return `true` if this map contains no elements, and `false` otherwise. | xref:BloombergLP/bdlc/FlatHashMap/end-03.adoc[`end`] | `end` overloads | xref:BloombergLP/bdlc/FlatHashMap/equal_range-02.adoc[`equal_range`] | `equal_range` overloads | xref:BloombergLP/bdlc/FlatHashMap/erase-04b.adoc[`erase`] | `erase` overloads | xref:BloombergLP/bdlc/FlatHashMap/find-04.adoc[`find`] | `find` overloads | xref:BloombergLP/bdlc/FlatHashMap/hash_function.adoc[`hash_function`] | Return (a copy of) the unary hash functor used by this map to generate a hash value (of type `bsl::size_t`) for a `KEY` object. | xref:BloombergLP/bdlc/FlatHashMap/insert-08.adoc[`insert`] | `insert` overloads | xref:BloombergLP/bdlc/FlatHashMap/insert_or_assign-0f.adoc[`insert_or_assign`] | `insert_or_assign` overloads | xref:BloombergLP/bdlc/FlatHashMap/key_eq.adoc[`key_eq`] | Return (a copy of) the binary key‐equality functor that returns `true` if the value of two `KEY` objects are equivalent, and `false` otherwise. | xref:BloombergLP/bdlc/FlatHashMap/load_factor.adoc[`load_factor`] | Return the current ratio between the number of elements in this container and its capacity. | xref:BloombergLP/bdlc/FlatHashMap/max_load_factor.adoc[`max_load_factor`] | Return the maximum load factor allowed for this map. Note that if an insert operation would cause the load factor to exceed `max_load_factor()`, that same insert operation will increase the capacity and rehash the entries of the container (see {Load Factor and Resizing}). Also note that the value returned by `max_load_factor` is implementation defined and cannot be changed by the user. | xref:BloombergLP/bdlc/FlatHashMap/operator_subs-03.adoc[`operator[]`] | Subscript operators | xref:BloombergLP/bdlc/FlatHashMap/print.adoc[`print`] | 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. | xref:BloombergLP/bdlc/FlatHashMap/rehash.adoc[`rehash`] | 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. | xref:BloombergLP/bdlc/FlatHashMap/reserve.adoc[`reserve`] | 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: ` rehash(bsl::ceil(numEntries / max_load_factor())) ` | xref:BloombergLP/bdlc/FlatHashMap/reset.adoc[`reset`] | Remove all elements from this map and release all memory from this map, returning the map to the default constructed state. | xref:BloombergLP/bdlc/FlatHashMap/size.adoc[`size`] | Return the number of elements in this map. | xref:BloombergLP/bdlc/FlatHashMap/swap.adoc[`swap`] | Exchange the value of this object as well as its hasher and equality functors with those of the specified `other` object. The behavior is undefined unless this object was created with the same allocator as `other`. | xref:BloombergLP/bdlc/FlatHashMap/try_emplace-03.adoc[`try_emplace`] | `try_emplace` overloads |=== == Friends [cols="1,4"] |=== | Name| Description | `xref:BloombergLP/bdlc/swap-05.adoc[BloombergLP::bdlc::swap]` | Exchange the contents of the two maps. | `xref:BloombergLP/bdlc/operator_not_eq-06.adoc[BloombergLP::bdlc::operator!=]` | Return whether the maps differ in key/value contents. | `xref:BloombergLP/bdlc/operator_eq-04c.adoc[BloombergLP::bdlc::operator==]` | Return whether the maps have the same key/value contents. |=== == Non-Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bdlc/operator_not_eq-0b1.adoc[`operator!=`] | Return `true` if the specified `lhs` and `rhs` objects do not have the same value, and `false` otherwise. Two `FlatHashMap` objects do not have the same value if their sizes are different or one contains an element equal to no element of the other. The hash and equality functors are not involved in the comparison. | xref:BloombergLP/bdlc/operator_eq-0d9.adoc[`operator==`] | Return `true` if the specified `lhs` and `rhs` objects have the same value, and `false` otherwise. Two `FlatHashMap` objects have the same value if their sizes are the same and each element contained in one is equal to an element of the other. The hash and equality functors are not involved in the comparison. | xref:BloombergLP/bdlc/swap-061.adoc[`swap`] | Exchange the value, the hasher, and the key‐equality functor of the specified `a` and `b` objects. This function provides the no‐throw exception‐safety guarantee if the two objects were created with the same allocator and the basic guarantee otherwise. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#