Namespaces
Variants

deduction guides for std::unordered_multiset

From cppreference.net

Défini dans l'en-tête <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 /* voir ci-dessous */ :: size_type = /* voir ci-dessous */ ,
Hash = Hash ( ) , Pred = Pred ( ) , Alloc = Alloc ( ) )
- > unordered_multiset < typename std:: iterator_traits < InputIt > :: value_type ,

Hash, Pred, Alloc > ;
(1) (depuis 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 /* voir ci-dessous */ :: size_type = /* voir ci-dessous */ ,
Hash = Hash ( ) , Pred = Pred ( ) , Alloc = Alloc ( ) )

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

unordered_multiset ( InputIt, InputIt, typename /* voir ci-dessous */ :: 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) (depuis C++17)
template < class InputIt, class Hash, class Alloc >

unordered_multiset ( InputIt, InputIt, typename /* voir ci-dessous */ :: 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) (depuis C++17)
template < class T, class Alloc >

unordered_multiset ( std:: initializer_list < T > , typename /* voir ci-dessous */ :: size_type , Alloc )

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

unordered_multiset ( std:: initializer_list < T > , typename /* voir ci-dessous */ :: size_type ,
Hash, Alloc )

- > unordered_multiset < T, Hash, std:: equal_to < T > , Alloc > ;
(6) (depuis 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 /* voir ci-dessous */ :: size_type = /* voir ci-dessous */ ,
Hash = Hash ( ) , Pred = Pred ( ) , Alloc = Alloc ( ) )

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

unordered_multiset ( std:: from_range_t , R && ,
typename /* voir ci-dessous */ :: 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) (depuis 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) (depuis C++23)
template < ranges:: input_range R, class Hash, class Alloc >

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

std:: equal_to < ranges:: range_value_t < R >> , Alloc > ;
(10) (depuis C++23)
1-6) Ces guides de déduction sont fournis pour unordered_multiset afin de permettre la déduction à partir d'une plage d'itérateurs (surcharges (1,3,4) ) et std::initializer_list (surcharges (2,5,6) ). Cette surcharge participe à la résolution de surcharge uniquement si InputIt satisfait LegacyInputIterator , Alloc satisfait Allocator , ni Hash ni Pred ne satisfont Allocator , et Hash n'est pas un type intégral.
7-10) Ces guides de déduction sont fournis pour unordered_multiset afin de permettre la déduction à partir d'un tag std::from_range_t et d'un input_range .

Note : la mesure dans laquelle la bibliothèque détermine qu'un type ne satisfait pas LegacyInputIterator n'est pas spécifiée, sauf qu'au minimum les types entiers ne se qualifient pas comme itérateurs d'entrée. De même, la mesure dans laquelle elle détermine qu'un type ne satisfait pas Allocator n'est pas spécifiée, sauf qu'au minimum le type membre Alloc::value_type doit exister et l'expression std:: declval < Alloc & > ( ) . allocate ( std:: size_t { } ) doit être bien formée lorsqu'elle est traitée comme un opérande non évalué.

Le size_type type de paramètre dans ces guides fait référence au size_type type membre du type déduit par le guide de déduction.

Notes

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_containers_ranges 202202L (C++23) Construction et insertion compatibles avec les gammes ; surcharges (7-10)

Exemple

#include <unordered_set>
int main()
{
    // guide #2 déduit std::unordered_multiset<int>
    std::unordered_multiset s = {1, 2, 3, 4};
    // guide #1 déduit std::unordered_multiset<int>
    std::unordered_multiset s2(s.begin(), s.end());
}