Namensräume
Varianten
Aktionen

std::from_range, std::from_range_t

Von cppreference.com
< cpp‎ | ranges
 
 
Bereichsbibliothek
Range-Adaptoren
 
Definiert in der Header-Datei <ranges>
struct from_range_t { explicit from_range_t() = default; };
(seit C++23)
inline constexpr std::from_range_t from_range {};
(seit C++23)

std::from_range ist ein Tag zur Disambiguierung, der an die Konstruktoren der geeigneten Container übergeben werden kann, um anzugeben, dass das enthaltene Element aus einem Bereich konstruiert wird.

Der entsprechende Typ std::from_range_t kann in der Parameterliste des Konstruktors verwendet werden, um auf den beabsichtigten Tag zu matchen.

Inhalt

[edit] Standardbibliothek

Die folgenden Typen der Standardbibliothek verwenden den Typ std::from_range_t in ihren Konstruktoren

Container-Bibliothek
konstruiert den vector aus einem Bereich
(public member function of std::vector<T,Allocator>)
konstruiert den inplace_vector aus einem Bereich
(public member function of std::inplace_vector<T,N>)
konstruiert den deque aus einem Bereich
(public member function of std::deque<T,Allocator>)
konstruiert die forward_list aus einem Bereich
(public member function of std::forward_list<T,Allocator>)
konstruiert die list aus einem Bereich
(public member function of std::list<T,Allocator>)
konstruiert das set aus einem Bereich
(public member function of std::set<Key,Compare,Allocator>)
konstruiert die map aus einem Bereich
(public member function of std::map<Key,T,Compare,Allocator>)
konstruiert das multiset aus einem Bereich
(public member function of std::multiset<Key,Compare,Allocator>)
konstruiert die multimap aus einem Bereich
(public member function of std::multimap<Key,T,Compare,Allocator>)
konstruiert das unordered_set aus einem Bereich
(public member function of std::unordered_set<Key,Hash,KeyEqual,Allocator>)
konstruiert die unordered_map aus einem Bereich
(public member function of std::unordered_map<Key,T,Hash,KeyEqual,Allocator>)
konstruiert das unordered_multiset aus einem Bereich
(public member function of std::unordered_multiset<Key,Hash,KeyEqual,Allocator>)
konstruiert die unordered_multimap aus einem Bereich
(public member function of std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>)
konstruiert die priority_queue aus einem Bereich
(public member function of std::priority_queue<T,Container,Compare>)
konstruiert die queue aus einem Bereich
(public member function of std::queue<T,Container>)
konstruiert die stack aus einem Bereich
(public member function of std::stack<T,Container>)
konstruiert das flat_set aus einem Bereich
(public member function of std::flat_set<Key,Compare,KeyContainer>)
konstruiert die flat_map aus einem Bereich
(public member function of std::flat_map<Key,T,Compare,KeyContainer,MappedContainer>)
konstruiert das flat_multiset aus einem Bereich
(public member function of std::flat_multiset<Key,Compare,KeyContainer>)
konstruiert die flat_multimap aus einem Bereich
(public member function of std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer>)
Bibliothek für Zeichenketten
konstruiert den basic_string aus einem Bereich
(public member function of std::basic_string<CharT,Traits,Allocator>)

[edit] Hinweise

Feature-Test-Makro Wert Std Feature
__cpp_lib_containers_ranges 202202L (C++23) Konstruktor mit Tag zur Konstruktion aus einem containerkompatiblen Bereich

[edit] Beispiel

#include <cassert>
#include <string>
 
int main()
{
#ifdef __cpp_lib_containers_ranges
    auto const range = {0x43, 43, 43};
    std::string str{std::from_range, range}; // uses tagged constructor
    assert(str == "C++");
#endif
}

[edit] Siehe auch

Tag für In-Place-Konstruktion
(Tag)[edit]
zeigt an, dass Elemente eines Bereichs sortiert sind (Eindeutigkeit ist nicht erforderlich)
(Tag)[edit]
zeigt an, dass Elemente eines Bereichs sortiert und eindeutig sind
(Tag)[edit]
konstruiert ein neues Nicht-View-Objekt aus einem Input-Range
(Funktions-Template) [edit]