[#BloombergLP-bdlcc-StripedUnorderedContainerImpl]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdlcc.adoc[bdlcc]::StripedUnorderedContainerImpl
:relfileprefix: ../../
:mrdocs:

This class implements the logic for a striped hash multimap with logic that supports a (unique) map as a special case&period;

== Synopsis

Declared in `&lt;bdlcc&lowbar;stripedunorderedcontainerimpl&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;
    class KEY,
    class VALUE,
    class HASH = xref:bsl/hash-06.adoc[bsl::hash&lt;KEY&gt;],
    class EQUAL = xref:bsl/equal_to-0d.adoc[bsl::equal&lowbar;to&lt;KEY&gt;]&gt;
class StripedUnorderedContainerImpl;
----

== Type Aliases

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/EraseIfValuePredicate.adoc[`EraseIfValuePredicate`] 
| Alias for a predicate that selects values to erase&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/KVType.adoc[`KVType`] 
| Value type of a bulk insert entry&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/Node.adoc[`Node`] 
| Node in a bucket&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/ReadOnlyVisitorFunction.adoc[`ReadOnlyVisitorFunction`] 
| Alias for a read&hyphen;only visitor over element values&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/VisitorFunction.adoc[`VisitorFunction`] 
| Alias for a visitor that may modify element values&period;
|===


== Enums

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/_04enum.adoc[`Unnamed enum`] 
| Default sizing constants for this container&period;
|===


== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/2constructor-072.adoc[`StripedUnorderedContainerImpl`]         [.small]#[constructor]#
| Constructors
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/2destructor.adoc[`&#126;StripedUnorderedContainerImpl`] [.small]#[destructor]#
| Destroy this hash map&period; This method is _not_ thread&hyphen;safe&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/allocator.adoc[`allocator`] 
| Return the allocator used by this hash map to supply memory&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/bucketCount.adoc[`bucketCount`] 
| Return the number of buckets in this hash map&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/bucketIndex.adoc[`bucketIndex`] 
| Return the bucket index where elements with `key` are inserted&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/bucketSize.adoc[`bucketSize`] 
| Return the number of elements in the bucket at `index`&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/canRehash.adoc[`canRehash`] 
| Return `true` if rehash is enabled and rehash is not in progress, and `false` otherwise&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/clear.adoc[`clear`] 
| Remove all elements from this striped hash map&period; If rehash is in progress, block until it completes&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/disableRehash.adoc[`disableRehash`] 
| Prevent rehash until the `enableRehash` method is called&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/empty.adoc[`empty`] 
| Return `true` if this hash map contains no elements, and `false` otherwise&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/enableRehash.adoc[`enableRehash`] 
| Allow rehashing to resume when the load factor is exceeded&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/equalFunction.adoc[`equalFunction`] 
| Return (a copy of) the key&hyphen;equality functor used by this hash map that returns `true` if two `KEY` objects have the same value, and `false` otherwise&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/eraseAll.adoc[`eraseAll`] 
| Erase all elements matching the specified `key`&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/eraseAllIf.adoc[`eraseAllIf`] 
| Erase elements matching `key` for which `predicate` is true&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/eraseBulkAll.adoc[`eraseBulkAll`] 
| Erase all elements whose keys fall in `&lsqb;first, last)&rsqb;`&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/eraseBulkFirst.adoc[`eraseBulkFirst`] 
| Erase the first element for each key in `&lsqb;first, last)&rsqb;`&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/eraseFirst.adoc[`eraseFirst`] 
| Erase the first element found with the specified `key`&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/eraseFirstIf.adoc[`eraseFirstIf`] 
| Erase the first element with `key` for which `predicate` is true&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/getValue-0b.adoc[`getValue`] 
| `getValue` overloads
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/hashFunction.adoc[`hashFunction`] 
| Return (a copy of) the unary hash functor used by this hash map to generate a hash value (of type `std&colon;&colon;size&lowbar;t`) for a `KEY` object&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/insertAlways-0c.adoc[`insertAlways`] 
| `insertAlways` overloads
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/insertBulkAlways.adoc[`insertBulkAlways`] 
| Insert key&hyphen;value pairs from the range `&lsqb;first, last)&rsqb;`&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/insertBulkUnique.adoc[`insertBulkUnique`] 
| Insert or update unique keys from the range `&lsqb;first, last)&rsqb;`&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/insertUnique-0b.adoc[`insertUnique`] 
| `insertUnique` overloads
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/isRehashEnabled.adoc[`isRehashEnabled`] 
| Return `true` if rehash is enabled, or `false` otherwise&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/loadFactor.adoc[`loadFactor`] 
| Return the current size divided by the number of buckets&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/maxLoadFactor.adoc[`maxLoadFactor`] 
| Return the maximum load factor allowed for this hash map&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/numStripes.adoc[`numStripes`] 
| Return the number of stripes in the hash&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/rehash.adoc[`rehash`] 
| Recreate this hash map with at least `numBuckets` buckets&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/setComputedValueAll.adoc[`setComputedValueAll`] 
| Invoke `visitor` on every element having `key`, inserting if absent&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/setComputedValueFirst.adoc[`setComputedValueFirst`] 
| Invoke `visitor` on the first element having `key`, inserting if absent&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/setValueAll.adoc[`setValueAll`] 
| Set every element with `key` to `value`, inserting if none exist&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/setValueFirst-0e.adoc[`setValueFirst`] 
| `setValueFirst` overloads
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/size.adoc[`size`] 
| Return the current number of elements in this hash&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/update.adoc[`update`] 
| Update each element with `key` by invoking the specified `visitor`&period;
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/visit-0a3.adoc[`visit`] 
| `visit` overloads
| xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl/visitReadOnly-02.adoc[`visitReadOnly`] 
| `visitReadOnly` overloads
|===


== Friends

[cols="1,4"]
|===
| Name| Description
| `xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl_LockElement.adoc[BloombergLP::bdlcc::StripedUnorderedContainerImpl&lowbar;LockElement]`
| A mutex &plus; support info&semi; padded to cacheline size, one per stripe
| `xref:BloombergLP/bdlcc/StripedUnorderedContainerImpl_TestUtil.adoc[BloombergLP::bdlcc::StripedUnorderedContainerImpl&lowbar;TestUtil]`
| Test utility exposing stripe lock&sol;unlock for the test driver&period;
|===


[.small]#Created with https://www.mrdocs.com[MrDocs]#
