Namensräume
Varianten
Aktionen

Ableitungsleitfäden für std::multiset

Von cppreference.com
< cpp‎ | container‎ | multiset
 
 
 
 
Definiert in Header <set>
template<

    class InputIt,
    class Comp = std::less<typename std::iterator_traits<InputIt>::value_type>,
    class Alloc = std::allocator<typename std::iterator_traits<InputIt>::value_type>>
multiset( InputIt, InputIt, Comp = Comp(), Alloc = Alloc() )

    -> multiset<typename std::iterator_traits<InputIt>::value_type, Comp, Alloc>;
(1) (seit C++17)
template<

    class Key, class Comp = std::less<Key>,
    class Alloc = std::allocator<Key> >
multiset( std::initializer_list<Key>, Comp = Comp(), Alloc = Alloc() )

    -> multiset<Key, Comp, Alloc>;
(2) (seit C++17)
template< class InputIt, class Alloc >

multiset( InputIt, InputIt, Alloc )
    -> multiset<typename std::iterator_traits<InputIt>::value_type,

                std::less<typename std::iterator_traits<InputIt>::value_type>, Alloc>;
(3) (seit C++17)
template< class Key, class Alloc >

multiset( std::initializer_list<Key>, Alloc )

    -> multiset<Key, std::less<Key>, Alloc>;
(4) (seit C++17)
template< ranges::input_range R, class Compare = less<ranges::range_value_t<R>>,

          class Alloc = std::allocator<ranges::range_value_t<R>> >
multiset( std::from_range_t, R&&, Compare = Compare(), Alloc = Alloc() )

    -> multiset<ranges::range_value_t<R>, Compare, Alloc>;
(5) (seit C++23)
template< ranges::input_range R, class Alloc >

multiset( std::from_range_t, R&&, Alloc )

    -> multiset<ranges::range_value_t<R>, std::less<ranges::range_value_t<R>>, Alloc>;
(6) (seit C++23)
1-4) Diese Ableitungsleitfäden werden für multiset bereitgestellt, um die Ableitung aus einem Iterator-Bereich (Überladungen (1,3)) und std::initializer_list (Überladungen (2,4)) zu ermöglichen.
5,6) Diese Ableitungsleitfäden werden für multiset bereitgestellt, um die Ableitung aus einem std::from_range_t-Tag und einem input_range zu ermöglichen.

Diese Überladungen nehmen an der Überladungsauflösung teil, nur wenn InputIt LegacyInputIterator erfüllt, Alloc Allocator erfüllt und Comp Allocator nicht erfüllt.

Hinweis: Das Ausmaß, in dem die Bibliothek bestimmt, dass ein Typ LegacyInputIterator nicht erfüllt, ist nicht spezifiziert, außer dass ganzzahlige Typen als Eingabeiteratoren qualifiziert sind. Ebenso ist das Ausmaß, in dem sie bestimmt, dass ein Typ Allocator nicht erfüllt, nicht spezifiziert, außer dass als Minimum der Mitgliedstyp Alloc::value_type existieren muss und der Ausdruck std::declval<Alloc&>().allocate(std::size_t{}) gut geformt sein muss, wenn er als nicht ausgewerteter Operand behandelt wird.

[bearbeiten] Hinweise

Feature-Test-Makro Wert Std Feature
__cpp_lib_containers_ranges 202202L (C++23) Bereichsbezogene Konstruktion und Einfügung; Überladung (5,6)

[bearbeiten] Beispiel

#include <set>
 
int main()
{
    // guide #2 deduces std::multiset<int>
    std::multiset s = {1, 2, 3, 4};
 
    // guide #1 deduces std::multiset<int>
    std::multiset s2(s.begin(), s.end());
}