[#bsl-multiset-03-2constructor-09a]
= xref:bsl.adoc[bsl]::xref:bsl/multiset-03.adoc[multiset]::multiset
:relfileprefix: ../../
:mrdocs:

Create a multiset having the (`value&lowbar;type`) values obtained from the specified `range`&period; Ignore those those objects having a key equivalent to that which appears earlier in the sequence&period; Optionally specify a `comparator` used to order key&hyphen;value pairs contained in this object&period; If `comparator` is not supplied, a default&hyphen;constructed object of the (template parameter) type `COMPARATOR` is used&period; Optionally specify a `basicAllocator` used to supply memory&period; If `basicAllocator` is not supplied, a default&hyphen;constructed object of the (template parameter) type `ALLOCATOR` is used&period; If the type `ALLOCATOR` is `bsl&colon;&colon;allocator` (the default), then `basicAllocator`, if supplied, shall be convertible to `bslma&colon;&colon;Allocator &ast;`&period; If the type `ALLOCATOR` is `bsl&colon;&colon;allocator` and `basicAllocator` is not supplied, the currently installed default allocator is used&period; If values obtained from &grave;range are ordered according to `comparator`, then this operation has `O&lsqb;N&rsqb;` complexity, where `N` is the number of values in the `range`&semi; otherwise, this operation has `O&lsqb;N &ast; log(N)&rsqb;` complexity&period; Note that `RANGE` must meet the requirements of an input range and the values from `range` must have a type matching or convertible to `value&lowbar;type`&period;

== Synopsis

Declared in `&lt;bslstl&lowbar;multiset&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;class RANGE&gt;
multiset(
    std::from&lowbar;range&lowbar;t,
    RANGE&& range,
    COMPARATOR const& comparator = COMPARATOR(),
    ALLOCATOR const& basicAllocator = ALLOCATOR());
----


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