deduction guides for std::unordered_set
| Definiert in Header <unordered_set> |
||
| template< class InputIt, |
(1) | (seit C++17) |
| template< class T, class Hash = std::hash<T>, |
(2) | (seit C++17) |
| template< class InputIt, class Alloc > unordered_set( InputIt, InputIt, typename /* siehe unten */::size_type, Alloc ) |
(3) | (seit C++17) |
| template< class InputIt, class Hash, class Alloc > unordered_set( InputIt, InputIt, typename /* siehe unten */::size_type, Hash, Alloc ) |
(4) | (seit C++17) |
| template< class T, class Alloc > unordered_set( std::initializer_list<T>, typename /* siehe unten */::size_type, Alloc ) |
(5) | (seit C++17) |
| template< class T, class Hash, class Alloc > unordered_set( std::initializer_list<T>, typename /* siehe unten */::size_type, |
(6) | (seit C++17) |
| template< ranges::input_range R, class Hash = std::hash<ranges::range_value_t<R>>, |
(7) | (seit C++23) |
| template< ranges::input_range R, class Alloc > unordered_set( std::from_range_t, R&&, |
(8) | (seit C++23) |
| template< ranges::input_range R, class Alloc > unordered_set( std::from_range_t, R&&, Alloc ) |
(9) | (seit C++23) |
| template< ranges::input_range R, class Hash, class Alloc > unordered_set( std::from_range_t, R&&, |
(10) | (seit C++23) |
unordered_set bereitgestellt, um die Deduktion aus einem Iterator-Bereich (Überladungen (1,3,4)) und std::initializer_list (Überladungen (2,5,6)) zu ermöglichen. Diese Überladung nimmt nur an der Auflösung von Überladungen teil, wenn InputIt LegacyInputIterator erfüllt, Alloc Allocator erfüllt, weder Hash noch Pred Allocator erfüllen und Hash kein ganzzahliger Typ ist.unordered_set bereitgestellt, um die Deduktion aus einem std::from_range_t Tag und einem input_range zu ermöglichen.Hinweis: Der Umfang, in dem die Bibliothek bestimmt, dass ein Typ LegacyInputIterator nicht erfüllt, ist nicht spezifiziert, außer dass ganzzahlige Typen als Eingabe-Iteratoren nicht qualifiziert sind. Ebenso ist der Umfang, in dem bestimmt wird, 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 gebildet sein muss, wenn er als unevaluierter Operand behandelt wird.
Der size_type-Parametertyp in diesen Leitfäden bezieht sich auf den size_type-Mitgliedstyp des von der Deduktionshilfe abgeleiteten Typs.
[edit] Anmerkungen
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_containers_ranges |
202202L |
(C++23) | Ranges-bewusste Konstruktion und Einfügung; Überladungen (7-10) |
[edit] Beispiel
#include <unordered_set> int main() { // guide #2 deduces std::unordered_set<int> std::unordered_set s = {1, 2, 3, 4}; // guide #1 deduces std::unordered_set<int> std::unordered_set s2(s.begin(), s.end()); }