Namespaces
Variants

deduction guides for std::unordered_multiset

From cppreference.net

(Anmerkung: Der bereitgestellte HTML-Code enthält keinen übersetzbaren Text, da alle Tags leer sind. Die Struktur bleibt unverändert, wie angefordert.)
Definiert im Header <unordered_set>
template <

class InputIt,
class Hash = std:: hash < typename std:: iterator_traits < InputIt > :: value_type > ,
class Pred = std:: equal_to < typename std:: iterator_traits < InputIt > :: value_type > ,
class Alloc = std:: allocator < typename std:: iterator_traits < InputIt > :: value_type > >
unordered_multiset ( InputIt, InputIt,
typename /* siehe unten */ :: size_type = /* siehe unten */ ,
Hash = Hash ( ) , Pred = Pred ( ) , Alloc = Alloc ( ) )
- > unordered_multiset < typename std:: iterator_traits < InputIt > :: value_type ,

Hash, Pred, Alloc > ;
(1) (seit C++17)
template < class T,

class Hash = std:: hash < T > ,
class Pred = std:: equal_to < T > ,
class Alloc = std:: allocator < T > >
unordered_multiset ( std:: initializer_list < T > ,
typename /* siehe unten */ :: size_type = /* siehe unten */ ,
Hash = Hash ( ) , Pred = Pred ( ) , Alloc = Alloc ( ) )

- > unordered_multiset < T, Hash, Pred, Alloc > ;
(2) (seit C++17)
template < class InputIt, class Alloc >

unordered_multiset ( InputIt, InputIt, typename /* siehe unten */ :: size_type , Alloc )
- > unordered_multiset < typename std:: iterator_traits < InputIt > :: value_type ,
std:: hash < typename std:: iterator_traits < InputIt > :: value_type > ,
std:: equal_to < typename std:: iterator_traits < InputIt > :: value_type > ,

Alloc > ;
(3) (seit C++17)
template < class InputIt, class Hash, class Alloc >

unordered_multiset ( InputIt, InputIt, typename /* siehe unten */ :: size_type , Hash, Alloc )
- > unordered_multiset < typename std:: iterator_traits < InputIt > :: value_type , Hash,
std:: equal_to < typename std:: iterator_traits < InputIt > :: value_type > ,

Alloc > ;
(4) (seit C++17)
template < class T, class Alloc >

unordered_multiset ( std:: initializer_list < T > , typename /* siehe unten */ :: size_type , Alloc )

- > unordered_multiset < T, std:: hash < T > , std:: equal_to < T > , Alloc > ;
(5) (seit C++17)
template < class T, class Hash, class Alloc >

unordered_multiset ( std:: initializer_list < T > , typename /* siehe unten */ :: size_type ,
Hash, Alloc )

- > unordered_multiset < T, Hash, std:: equal_to < T > , Alloc > ;
(6) (seit C++17)
template < ranges:: input_range R,

class Hash = std:: hash < ranges:: range_value_t < R >> ,
class Pred = std:: equal_to < ranges:: range_value_t < R >> ,
class Alloc = std:: allocator < ranges:: range_value_t < R >> >
unordered_multiset ( std:: from_range_t , R && ,
typename /* siehe unten */ :: size_type = /* siehe unten */ ,
Hash = Hash ( ) , Pred = Pred ( ) , Alloc = Alloc ( ) )

- > unordered_multiset < ranges:: range_value_t < R > , Hash, Pred, Alloc > ;
(7) (seit C++23)
template < ranges:: input_range R, class Alloc >

unordered_multiset ( std:: from_range_t , R && ,
typename /* siehe unten */ :: size_type , Alloc )
- > unordered_multiset < ranges:: range_value_t < R > , hash < ranges:: range_value_t < R >> ,

std:: equal_to < ranges:: range_value_t < R >> , Alloc > ;
(8) (seit C++23)
template < ranges:: input_range R, class Alloc >

unordered_multiset ( std:: from_range_t , R && , Alloc )
- > unordered_multiset < ranges:: range_value_t < R > , hash < ranges:: range_value_t < R >> ,

std:: equal_to < ranges:: range_value_t < R >> , Alloc > ;
(9) (seit C++23)
template < ranges:: input_range R, class Hash, class Alloc >

unordered_multiset ( std:: from_range_t , R && ,
typename /* siehe unten */ :: size_type , Hash, Alloc )
- > unordered_multiset < ranges:: range_value_t < R > , Hash,

std:: equal_to < ranges:: range_value_t < R >> , Alloc > ;
(10) (seit C++23)
1-6) Diese Deduction Guides werden für unordered_multiset bereitgestellt, um die Ableitung aus einem Iteratorbereich (Overloads (1,3,4) ) und std::initializer_list (Overloads (2,5,6) ) zu ermöglichen. Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn InputIt die Anforderungen LegacyInputIterator erfüllt, Alloc die Anforderungen Allocator erfüllt, weder Hash noch Pred die Anforderungen Allocator erfüllen und Hash kein integraler Typ ist.
7-10) Diese Deduktionsführer werden für unordered_multiset bereitgestellt, um die Ableitung von einem std::from_range_t -Tag und einem input_range zu ermöglichen.

Hinweis: Das Ausmaß, in dem die Bibliothek feststellt, dass ein Typ nicht LegacyInputIterator erfüllt, ist nicht spezifiziert, außer dass mindestens integrale Typen nicht als Input-Iteratoren qualifizieren. Ebenso ist das Ausmaß, in dem sie feststellt, dass ein Typ nicht Allocator erfüllt, nicht spezifiziert, außer dass mindestens der Member-Typ Alloc::value_type existieren muss und der Ausdruck std:: declval < Alloc & > ( ) . allocate ( std:: size_t { } ) wohlgeformt sein muss, wenn er als nicht ausgewerteter Operand behandelt wird.

Der size_type -Parametertyp in diesen Guides bezieht sich auf den size_type -Membertyp des durch den Deduction Guide abgeleiteten Typs.

Hinweise

Feature-Test Makro Wert Std Feature
__cpp_lib_containers_ranges 202202L (C++23) Ranges-basierte Konstruktion und Einfügung; Überladungen (7-10)

Beispiel

#include <unordered_set>
int main()
{
    // Leitfaden #2 leitet std::unordered_multiset<int> ab
    std::unordered_multiset s = {1, 2, 3, 4};
    // Leitfaden #1 leitet std::unordered_multiset<int> ab
    std::unordered_multiset s2(s.begin(), s.end());
}