Standard library header <unordered_set> (C++11)

This header is part of the

containers

library.

Includes

<compare>

(C++20)

Three-way comparison operator

support

[edit]

<initializer_list>

(C++11)

std::initializer_list

class template

[edit]

Classes

unordered_set

(C++11)

collection of unique keys, hashed by keys
(class template)

[edit]

unordered_multiset

(C++11)

collection of keys, hashed by keys
(class template)

[edit]

Functions

operator==operator!=

(C++11)(C++11)(removed in C++20)

compares the values in the unordered_set
(function template)

[edit]

std::swap(std::unordered_set)

(C++11)

specializes the

std::swap

algorithm
(function template)

[edit]

erase_if(std::unordered_set)

(C++20)

erases all elements satisfying specific criteria
(function template)

[edit]

operator==operator!=

(C++11)(C++11)(removed in C++20)

compares the values in the unordered_multiset
(function template)

[edit]

std::swap(std::unordered_multiset)

(C++11)

specializes the

std::swap

algorithm
(function template)

[edit]

erase_if(std::unordered_multiset)

(C++20)

erases all elements satisfying specific criteria
(function template)

[edit]

Range access

begincbegin

(C++11)(C++14)

returns an iterator to the beginning of a container or array
(function template)

[edit]

endcend

(C++11)(C++14)

returns an iterator to the end of a container or array
(function template)

[edit]

rbegincrbegin

(C++14)

returns a reverse iterator to the beginning of a container or array
(function template)

[edit]

rendcrend

(C++14)

returns a reverse end iterator for a container or array
(function template)

[edit]

sizessize

(C++17)(C++20)

returns the size of a container or array
(function template)

[edit]

empty

(C++17)

checks whether the container is empty
(function template)

[edit]

data

(C++17)

obtains the pointer to the underlying array
(function template)

[edit]

Synopsis

#include<compare>#include<initializer_list>namespacestd{// class template unordered_settemplate<classKey,classHash=hash<Key>,classPred=equal_to<Key>,classAlloc=allocator<Key>>classunordered_set;// class template unordered_multisettemplate<classKey,classHash=hash<Key>,classPred=equal_to<Key>,classAlloc=allocator<Key>>classunordered_multiset;template<classKey,classHash,classPred,classAlloc>constexprbooloperator==(constunordered_set<Key,Hash,Pred,Alloc>&a,constunordered_set<Key,Hash,Pred,Alloc>&b);template<classKey,classHash,classPred,classAlloc>constexprbooloperator==(constunordered_multiset<Key,Hash,Pred,Alloc>&a,constunordered_multiset<Key,Hash,Pred,Alloc>&b);template<classKey,classHash,classPred,classAlloc>constexprvoidswap(unordered_set<Key,Hash,Pred,Alloc>&x,unordered_set<Key,Hash,Pred,Alloc>&y)noexcept(noexcept(x.swap(y)));template<classKey,classHash,classPred,classAlloc>constexprvoidswap(unordered_multiset<Key,Hash,Pred,Alloc>&x,unordered_multiset<Key,Hash,Pred,Alloc>&y)noexcept(noexcept(x.swap(y)));// erasure for unordered_settemplate<classK,classH,classP,classA,classPredicate>constexprtypenameunordered_set<K,H,P,A>::size_typeerase_if(unordered_set<K,H,P,A>&c,Predicatepred);// erasure for unordered_multisettemplate<classK,classH,classP,classA,classPredicate>constexprtypenameunordered_multiset<K,H,P,A>::size_typeerase_if(unordered_multiset<K,H,P,A>&c,Predicatepred);namespacepmr{template<classKey,classHash=hash<Key>,classPred=equal_to<Key>>usingunordered_set=std::unordered_set<Key,Hash,Pred,polymorphic_allocator<Key>>;template<classKey,classHash=hash<Key>,classPred=equal_to<Key>>usingunordered_multiset=std::unordered_multiset<Key,Hash,Pred,polymorphic_allocator<Key>>;}}Class template

std::unordered_set

namespacestd{template<classKey,classHash=hash<Key>,classPred=equal_to<Key>,classAllocator=allocator<Key>>classunordered_set{public:// typesusingkey_type=Key;usingvalue_type=Key;usinghasher=Hash;usingkey_equal=Pred;usingallocator_type=Allocator;usingpointer=allocator_traits<Allocator>::pointer;usingconst_pointer=allocator_traits<Allocator>::const_pointer;usingreference=value_type&;usingconst_reference=constvalue_type&;usingsize_type=/* implementation-defined */;usingdifference_type=/* implementation-defined */;usingiterator=/* implementation-defined */;usingconst_iterator=/* implementation-defined */;usinglocal_iterator=/* implementation-defined */;usingconst_local_iterator=/* implementation-defined */;usingnode_type=/* unspecified */;usinginsert_return_type=/*insert-return-type*/<iterator,node_type>;// construct/copy/destroyconstexprunordered_set();constexprexplicitunordered_set(size_typen,consthasher&hf=hasher(),constkey_equal&eql=key_equal(),constallocator_type&a=allocator_type());template<classInputIter>constexprunordered_set(InputIterf,InputIterl,size_typen=/* see description */,consthasher&hf=hasher(),constkey_equal&eql=key_equal(),constallocator_type&a=allocator_type());template<container-compatible-range<value_type>R>constexprunordered_set(from_range_t,R&&rg,size_typen=/* see description */,consthasher&hf=hasher(),constkey_equal&eql=key_equal(),constallocator_type&a=allocator_type());constexprunordered_set(constunordered_set&);constexprunordered_set(unordered_set&&);constexprexplicitunordered_set(constAllocator&);constexprunordered_set(constunordered_set&,consttype_identity_t<Allocator>&);constexprunordered_set(unordered_set&&,consttype_identity_t<Allocator>&);constexprunordered_set(initializer_list<value_type>il,size_typen=/* see description */,consthasher&hf=hasher(),constkey_equal&eql=key_equal(),constallocator_type&a=allocator_type());constexprunordered_set(size_typen,constallocator_type&a):unordered_set(n,hasher(),key_equal(),a){}constexprunordered_set(size_typen,consthasher&hf,constallocator_type&a):unordered_set(n,hf,key_equal(),a){}template<classInputIter>constexprunordered_set(InputIterf,InputIterl,size_typen,constallocator_type&a):unordered_set(f,l,n,hasher(),key_equal(),a){}template<classInputIter>constexprunordered_set(InputIterf,InputIterl,size_typen,consthasher&hf,constallocator_type&a):unordered_set(f,l,n,hf,key_equal(),a){}constexprunordered_set(initializer_list<value_type>il,size_typen,constallocator_type&a):unordered_set(il,n,hasher(),key_equal(),a){}template<container-compatible-range<value_type>R>constexprunordered_set(from_range_t,R&&rg,size_typen,constallocator_type&a):unordered_set(from_range,std::forward<R>(rg),n,hasher(),key_equal(),a){}template<container-compatible-range<value_type>R>constexprunordered_set(from_range_t,R&&rg,size_typen,consthasher&hf,constallocator_type&a):unordered_set(from_range,std::forward<R>(rg),n,hf,key_equal(),a){}constexprunordered_set(initializer_list<value_type>il,size_typen,consthasher&hf,constallocator_type&a):unordered_set(il,n,hf,key_equal(),a){}constexpr~unordered_set();constexprunordered_set&operator=(constunordered_set&);constexprunordered_set&operator=(unordered_set&&)noexcept(allocator_traits<Allocator>::is_always_equal::value&&is_nothrow_move_assignable_v<Hash>&&is_nothrow_move_assignable_v<Pred>);constexprunordered_set&operator=(initializer_list<value_type>);constexprallocator_typeget_allocator()constnoexcept;// iteratorsconstexpriteratorbegin()noexcept;constexprconst_iteratorbegin()constnoexcept;constexpriteratorend()noexcept;constexprconst_iteratorend()constnoexcept;constexprconst_iteratorcbegin()constnoexcept;constexprconst_iteratorcend()constnoexcept;// capacityconstexprboolempty()constnoexcept;constexprsize_typesize()constnoexcept;constexprsize_typemax_size()constnoexcept;// modifierstemplate<class...Args>constexprpair<iterator,bool>emplace(Args&&...args);template<class...Args>constexpriteratoremplace_hint(const_iteratorposition,Args&&...args);constexprpair<iterator,bool>insert(constvalue_type&obj);constexprpair<iterator,bool>insert(value_type&&obj);template<classK>constexprpair<iterator,bool>insert(K&&obj);constexpriteratorinsert(const_iteratorhint,constvalue_type&obj);constexpriteratorinsert(const_iteratorhint,value_type&&obj);template<classK>constexpriteratorinsert(const_iteratorhint,K&&obj);template<classInputIter>constexprvoidinsert(InputIterfirst,InputIterlast);template<container-compatible-range<value_type>R>constexprvoidinsert_range(R&&rg);constexprvoidinsert(initializer_list<value_type>);constexprnode_typeextract(const_iteratorposition);constexprnode_typeextract(constkey_type&x);template<classK>constexprnode_typeextract(K&&x);constexprinsert_return_typeinsert(node_type&&nh);constexpriteratorinsert(const_iteratorhint,node_type&&nh);constexpriteratorerase(iteratorposition)requires(!same_as<iterator,const_iterator>);constexpriteratorerase(const_iteratorposition);constexprsize_typeerase(constkey_type&k);template<classK>constexprsize_typeerase(K&&x);constexpriteratorerase(const_iteratorfirst,const_iteratorlast);constexprvoidswap(unordered_set&)noexcept(allocator_traits<Allocator>::is_always_equal::value&&is_nothrow_swappable_v<Hash>&&is_nothrow_swappable_v<Pred>);constexprvoidclear()noexcept;template<classH2,classP2>constexprvoidmerge(unordered_set<Key,H2,P2,Allocator>&source);template<classH2,classP2>constexprvoidmerge(unordered_set<Key,H2,P2,Allocator>&&source);template<classH2,classP2>constexprvoidmerge(unordered_multiset<Key,H2,P2,Allocator>&source);template<classH2,classP2>constexprvoidmerge(unordered_multiset<Key,H2,P2,Allocator>&&source);// observersconstexprhasherhash_function()const;constexprkey_equalkey_eq()const;// set operationsconstexpriteratorfind(constkey_type&k);constexprconst_iteratorfind(constkey_type&k)const;template<classK>constexpriteratorfind(constK&k);template<classK>constexprconst_iteratorfind(constK&k)const;constexprsize_typecount(constkey_type&k)const;template<classK>constexprsize_typecount(constK&k)const;constexprboolcontains(constkey_type&k)const;template<classK>constexprboolcontains(constK&k)const;constexprpair<iterator,iterator>equal_range(constkey_type&k);constexprpair<const_iterator,const_iterator>equal_range(constkey_type&k)const;template<classK>constexprpair<iterator,iterator>equal_range(constK&k);template<classK>constexprpair<const_iterator,const_iterator>equal_range(constK&k)const;// bucket interfaceconstexprsize_typebucket_count()constnoexcept;constexprsize_typemax_bucket_count()constnoexcept;constexprsize_typebucket_size(size_typen)const;constexprsize_typebucket(constkey_type&k)const;template<classK>constexprsize_typebucket(constK&k)const;constexprlocal_iteratorbegin(size_typen);constexprconst_local_iteratorbegin(size_typen)const;constexprlocal_iteratorend(size_typen);constexprconst_local_iteratorend(size_typen)const;constexprconst_local_iteratorcbegin(size_typen)const;constexprconst_local_iteratorcend(size_typen)const;// hash policyconstexprfloatload_factor()constnoexcept;constexprfloatmax_load_factor()constnoexcept;constexprvoidmax_load_factor(floatz);constexprvoidrehash(size_typen);constexprvoidreserve(size_typen);};template<classInputIter,classHash=hash</*iter-value-type*/<InputIter>>,classPred=equal_to</*iter-value-type*/<InputIter>>,classAllocator=allocator</*iter-value-type*/<InputIter>>>unordered_set(InputIter,InputIter,typename/* see description */::size_type=/* see description */,Hash=Hash(),Pred=Pred(),Allocator=Allocator())->unordered_set</*iter-value-type*/<InputIter>,Hash,Pred,Allocator>;template<ranges::input_rangeR,classHash=hash<ranges::range_value_t<R>>,classPred=equal_to<ranges::range_value_t<R>>,classAllocator=allocator<ranges::range_value_t<R>>>unordered_set(from_range_t,R&&,typename/* see description */::size_type=/* see description */,Hash=Hash(),Pred=Pred(),Allocator=Allocator())->unordered_set<ranges::range_value_t<R>,Hash,Pred,Allocator>;template<classT,classHash=hash<T>,classPred=equal_to<T>,classAllocator=allocator<T>>unordered_set(initializer_list<T>,typename/* see description */::size_type=/* see description */,Hash=Hash(),Pred=Pred(),Allocator=Allocator())->unordered_set<T,Hash,Pred,Allocator>;template<classInputIter,classAllocator>unordered_set(InputIter,InputIter,typename/* see description */::size_type,Allocator)->unordered_set</*iter-value-type*/<InputIter>,hash</*iter-value-type*/<InputIter>>,equal_to</*iter-value-type*/<InputIter>>,Allocator>;template<classInputIter,classHash,classAllocator>unordered_set(InputIter,InputIter,typename/* see description */::size_type,Hash,Allocator)->unordered_set</*iter-value-type*/<InputIter>,Hash,equal_to</*iter-value-type*/<InputIter>>,Allocator>;template<ranges::input_rangeR,classAllocator>unordered_set(from_range_t,R&&,typename/* see description */::size_type,Allocator)->unordered_set<ranges::range_value_t<R>,hash<ranges::range_value_t<R>>,equal_to<ranges::range_value_t<R>>,Allocator>;template<ranges::input_rangeR,classAllocator>unordered_set(from_range_t,R&&,Allocator)->unordered_set<ranges::range_value_t<R>,hash<ranges::range_value_t<R>>,equal_to<ranges::range_value_t<R>>,Allocator>;template<ranges::input_rangeR,classHash,classAllocator>unordered_set(from_range_t,R&&,typename/* see description */::size_type,Hash,Allocator)->unordered_set<ranges::range_value_t<R>,Hash,equal_to<ranges::range_value_t<R>>,Allocator>;template<classT,classAllocator>unordered_set(initializer_list<T>,typename/* see description */::size_type,Allocator)->unordered_set<T,hash<T>,equal_to<T>,Allocator>;template<classT,classHash,classAllocator>unordered_set(initializer_list<T>,typename/* see description */::size_type,Hash,Allocator)->unordered_set<T,Hash,equal_to<T>,Allocator>;}Class template

std::unordered_multiset

namespacestd{template<classKey,classHash=hash<Key>,classPred=equal_to<Key>,classAllocator=allocator<Key>>classunordered_multiset{public:// typesusingkey_type=Key;usingvalue_type=Key;usinghasher=Hash;usingkey_equal=Pred;usingallocator_type=Allocator;usingpointer=allocator_traits<Allocator>::pointer;usingconst_pointer=allocator_traits<Allocator>::const_pointer;usingreference=value_type&;usingconst_reference=constvalue_type&;usingsize_type=/* implementation-defined */;usingdifference_type=/* implementation-defined */;usingiterator=/* implementation-defined */;usingconst_iterator=/* implementation-defined */;usinglocal_iterator=/* implementation-defined */;usingconst_local_iterator=/* implementation-defined */;usingnode_type=/* unspecified */;// construct/copy/destroyconstexprunordered_multiset();constexprexplicitunordered_multiset(size_typen,consthasher&hf=hasher(),constkey_equal&eql=key_equal(),constallocator_type&a=allocator_type());template<classInputIter>constexprunordered_multiset(InputIterf,InputIterl,size_typen=/* see description */,consthasher&hf=hasher(),constkey_equal&eql=key_equal(),constallocator_type&a=allocator_type());template<container-compatible-range<value_type>R>constexprunordered_multiset(from_range_t,R&&rg,size_typen=/* see description */,consthasher&hf=hasher(),constkey_equal&eql=key_equal(),constallocator_type&a=allocator_type());constexprunordered_multiset(constunordered_multiset&);constexprunordered_multiset(unordered_multiset&&);constexprexplicitunordered_multiset(constAllocator&);constexprunordered_multiset(constunordered_multiset&,consttype_identity_t<Allocator>&);constexprunordered_multiset(unordered_multiset&&,consttype_identity_t<Allocator>&);constexprunordered_multiset(initializer_list<value_type>il,size_typen=/* see description */,consthasher&hf=hasher(),constkey_equal&eql=key_equal(),constallocator_type&a=allocator_type());constexprunordered_multiset(size_typen,constallocator_type&a):unordered_multiset(n,hasher(),key_equal(),a){}constexprunordered_multiset(size_typen,consthasher&hf,constallocator_type&a):unordered_multiset(n,hf,key_equal(),a){}template<classInputIter>constexprunordered_multiset(InputIterf,InputIterl,size_typen,constallocator_type&a):unordered_multiset(f,l,n,hasher(),key_equal(),a){}template<classInputIter>constexprunordered_multiset(InputIterf,InputIterl,size_typen,consthasher&hf,constallocator_type&a):unordered_multiset(f,l,n,hf,key_equal(),a){}template<container-compatible-range<value_type>R>constexprunordered_multiset(from_range_t,R&&rg,size_typen,constallocator_type&a):unordered_multiset(from_range,std::forward<R>(rg),n,hasher(),key_equal(),a){}template<container-compatible-range<value_type>R>constexprunordered_multiset(from_range_t,R&&rg,size_typen,consthasher&hf,constallocator_type&a):unordered_multiset(from_range,std::forward<R>(rg),n,hf,key_equal(),a){}constexprunordered_multiset(initializer_list<value_type>il,size_typen,constallocator_type&a):unordered_multiset(il,n,hasher(),key_equal(),a){}constexprunordered_multiset(initializer_list<value_type>il,size_typen,consthasher&hf,constallocator_type&a):unordered_multiset(il,n,hf,key_equal(),a){}constexpr~unordered_multiset();constexprunordered_multiset&operator=(constunordered_multiset&);constexprunordered_multiset&operator=(unordered_multiset&&)noexcept(allocator_traits<Allocator>::is_always_equal::value&&is_nothrow_move_assignable_v<Hash>&&is_nothrow_move_assignable_v<Pred>);constexprunordered_multiset&operator=(initializer_list<value_type>);constexprallocator_typeget_allocator()constnoexcept;// iteratorsconstexpriteratorbegin()noexcept;constexprconst_iteratorbegin()constnoexcept;constexpriteratorend()noexcept;constexprconst_iteratorend()constnoexcept;constexprconst_iteratorcbegin()constnoexcept;constexprconst_iteratorcend()constnoexcept;// capacityconstexprboolempty()constnoexcept;constexprsize_typesize()constnoexcept;constexprsize_typemax_size()constnoexcept;// modifierstemplate<class...Args>constexpriteratoremplace(Args&&...args);template<class...Args>constexpriteratoremplace_hint(const_iteratorposition,Args&&...args);constexpriteratorinsert(constvalue_type&obj);constexpriteratorinsert(value_type&&obj);constexpriteratorinsert(const_iteratorhint,constvalue_type&obj);constexpriteratorinsert(const_iteratorhint,value_type&&obj);template<classInputIter>constexprvoidinsert(InputIterfirst,InputIterlast);template<container-compatible-range<value_type>R>constexprvoidinsert_range(R&&rg);constexprvoidinsert(initializer_list<value_type>);constexprnode_typeextract(const_iteratorposition);constexprnode_typeextract(constkey_type&x);template<classK>constexprnode_typeextract(K&&x);constexpriteratorinsert(node_type&&nh);constexpriteratorinsert(const_iteratorhint,node_type&&nh);constexpriteratorerase(iteratorposition)requires(!same_as<iterator,const_iterator>);constexpriteratorerase(const_iteratorposition);constexprsize_typeerase(constkey_type&k);template<classK>constexprsize_typeerase(K&&x);constexpriteratorerase(const_iteratorfirst,const_iteratorlast);constexprvoidswap(unordered_multiset&)noexcept(allocator_traits<Allocator>::is_always_equal::value&&is_nothrow_swappable_v<Hash>&&is_nothrow_swappable_v<Pred>);constexprvoidclear()noexcept;template<classH2,classP2>constexprvoidmerge(unordered_multiset<Key,H2,P2,Allocator>&source);template<classH2,classP2>constexprvoidmerge(unordered_multiset<Key,H2,P2,Allocator>&&source);template<classH2,classP2>constexprvoidmerge(unordered_set<Key,H2,P2,Allocator>&source);template<classH2,classP2>constexprvoidmerge(unordered_set<Key,H2,P2,Allocator>&&source);// observersconstexprhasherhash_function()const;constexprkey_equalkey_eq()const;// set operationsconstexpriteratorfind(constkey_type&k);constexprconst_iteratorfind(constkey_type&k)const;template<classK>constexpriteratorfind(constK&k);template<classK>constexprconst_iteratorfind(constK&k)const;constexprsize_typecount(constkey_type&k)const;template<classK>constexprsize_typecount(constK&k)const;constexprboolcontains(constkey_type&k)const;template<classK>constexprboolcontains(constK&k)const;constexprpair<iterator,iterator>equal_range(constkey_type&k);constexprpair<const_iterator,const_iterator>equal_range(constkey_type&k)const;template<classK>constexprpair<iterator,iterator>equal_range(constK&k);template<classK>constexprpair<const_iterator,const_iterator>equal_range(constK&k)const;// bucket interfaceconstexprsize_typebucket_count()constnoexcept;constexprsize_typemax_bucket_count()constnoexcept;constexprsize_typebucket_size(size_typen)const;constexprsize_typebucket(constkey_type&k)const;template<classK>constexprsize_typebucket(constK&k)const;constexprlocal_iteratorbegin(size_typen);constexprconst_local_iteratorbegin(size_typen)const;constexprlocal_iteratorend(size_typen);constexprconst_local_iteratorend(size_typen)const;constexprconst_local_iteratorcbegin(size_typen)const;constexprconst_local_iteratorcend(size_typen)const;// hash policyconstexprfloatload_factor()constnoexcept;constexprfloatmax_load_factor()constnoexcept;constexprvoidmax_load_factor(floatz);constexprvoidrehash(size_typen);constexprvoidreserve(size_typen);};template<classInputIter,classHash=hash</*iter-value-type*/<InputIter>>,classPred=equal_to</*iter-value-type*/<InputIter>>,classAllocator=allocator</*iter-value-type*/<InputIter>>>unordered_multiset(InputIter,InputIter,typename/* see description */::size_type=/* see description */,Hash=Hash(),Pred=Pred(),Allocator=Allocator())->unordered_multiset</*iter-value-type*/<InputIter>,Hash,Pred,Allocator>;template<ranges::input_rangeR,classHash=hash<ranges::range_value_t<R>>,classPred=equal_to<ranges::range_value_t<R>>,classAllocator=allocator<ranges::range_value_t<R>>>unordered_multiset(from_range_t,R&&,typename/* see description */::size_type=/* see description */,Hash=Hash(),Pred=Pred(),Allocator=Allocator())->unordered_multiset<ranges::range_value_t<R>,Hash,Pred,Allocator>;template<classT,classHash=hash<T>,classPred=equal_to<T>,classAllocator=allocator<T>>unordered_multiset(initializer_list<T>,typename/* see description */::size_type=/* see description */,Hash=Hash(),Pred=Pred(),Allocator=Allocator())->unordered_multiset<T,Hash,Pred,Allocator>;template<classInputIter,classAllocator>unordered_multiset(InputIter,InputIter,typename/* see description */::size_type,Allocator)->unordered_multiset</*iter-value-type*/<InputIter>,hash</*iter-value-type*/<InputIter>>,equal_to</*iter-value-type*/<InputIter>>,Allocator>;template<classInputIter,classHash,classAllocator>unordered_multiset(InputIter,InputIter,typename/* see description */::size_type,Hash,Allocator)->unordered_multiset</*iter-value-type*/<InputIter>,Hash,equal_to</*iter-value-type*/<InputIter>>,Allocator>;template<ranges::input_rangeR,classAllocator>unordered_multiset(from_range_t,R&&,typename/* see description */::size_type,Allocator)->unordered_multiset<ranges::range_value_t<R>,hash<ranges::range_value_t<R>>,equal_to<ranges::range_value_t<R>>,Allocator>;template<ranges::input_rangeR,classAllocator>unordered_multiset(from_range_t,R&&,Allocator)->unordered_multiset<ranges::range_value_t<R>,hash<ranges::range_value_t<R>>,equal_to<ranges::range_value_t<R>>,Allocator>;template<ranges::input_rangeR,classHash,classAllocator>unordered_multiset(from_range_t,R&&,typename/* see description */::size_type,Hash,Allocator)->unordered_multiset<ranges::range_value_t<R>,Hash,equal_to<ranges::range_value_t<R>>,Allocator>;template<classT,classAllocator>unordered_multiset(initializer_list<T>,typename/* see description */::size_type,Allocator)->unordered_multiset<T,hash<T>,equal_to<T>,Allocator>;template<classT,classHash,classAllocator>unordered_multiset(initializer_list<T>,typename/* see description */::size_type,Hash,Allocator)->unordered_multiset<T,Hash,equal_to<T>,Allocator>;}