Namespaces
Variants

std::from_range, std::from_range_t

Von de.cppreference.net
 
 
Bereiche-Bibliothek
Bereichsadaptoren
 
Definiert in Header <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 Disambiguierungs-Tag, das 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 das beabsichtigte Tag zu identifizieren.

Standardbibliothek

Die folgenden Standardbibliothekstypen verwenden std::from_range_t Typ in ihren Konstruktoren:

Container-Bibliothek
konstruiert das vector aus einem Bereich
(öffentliche Elementfunktion von std::vector<T,Allocator>)
konstruiert das inplace_vector aus einem Bereich
(öffentliche Elementfunktion von std::inplace_vector<T,N>)
konstruiert das hive aus einem Bereich
(öffentliche Elementfunktion von std::hive<T,Allocator>)
konstruiert das deque aus einem Bereich
(öffentliche Elementfunktion von std::deque<T,Allocator>)
konstruiert das forward_list aus einem Bereich
(öffentliche Elementfunktion von std::forward_list<T,Allocator>)
konstruiert das list aus einem Bereich
(öffentliche Elementfunktion von std::list<T,Allocator>)
konstruiert das set aus einem Bereich
(öffentliche Elementfunktion von std::set<Key,Compare,Allocator>)
konstruiert das map aus einem Bereich
(öffentliche Elementfunktion von std::map<Key,T,Compare,Allocator>)
konstruiert das multiset aus einem Bereich
(öffentliche Elementfunktion von std::multiset<Key,Compare,Allocator>)
konstruiert das multimap aus einem Bereich
(öffentliche Elementfunktion von std::multimap<Key,T,Compare,Allocator>)
konstruiert das unordered_set aus einem Bereich
(öffentliche Elementfunktion von std::unordered_set<Key,Hash,KeyEqual,Allocator>)
konstruiert das unordered_map aus einem Bereich
(öffentliche Elementfunktion von std::unordered_map<Key,T,Hash,KeyEqual,Allocator>)
konstruiert das unordered_multiset aus einem Bereich
(öffentliche Elementfunktion von std::unordered_multiset<Key,Hash,KeyEqual,Allocator>)
konstruiert das unordered_multimap aus einem Bereich
(öffentliche Elementfunktion von std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>)
konstruiert das priority_queue aus einem Bereich
(öffentliche Elementfunktion von std::priority_queue<T,Container,Compare>)
konstruiert das queue aus einem Bereich
(öffentliche Elementfunktion von std::queue<T,Container>)
konstruiert das stack aus einem Bereich
(öffentliche Elementfunktion von std::stack<T,Container>)
konstruiert das flat_set aus einem Bereich
(öffentliche Elementfunktion von std::flat_set<Key,Compare,KeyContainer>)
konstruiert das flat_map aus einem Bereich
(öffentliche Elementfunktion von std::flat_map<Key,T,Compare,KeyContainer,MappedContainer>)
konstruiert das flat_multiset aus einem Bereich
(öffentliche Elementfunktion von std::flat_multiset<Key,Compare,KeyContainer>)
konstruiert das flat_multimap aus einem Bereich
(öffentliche Elementfunktion von std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer>)
String-Bibliothek
Konstruiert den basic_string aus einem Bereich
(Öffentliche Mitgliedsfunktion von std::basic_string<CharT,Traits,Allocator> )

Hinweise

Feature-Test Makro Wert Standard Funktion
__cpp_lib_containers_ranges 202202L (C++23) Markierte Konstruktoren zum Konstruieren aus einem container-kompatiblen Bereich

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}; // verwendet markierten Konstruktor
    assert(str == "C++");
#endif
}
**Übersetzte Elemente:** - "Run this code" → "Diesen Code ausführen" - "uses tagged constructor" → "verwendet markierten Konstruktor" **Nicht übersetzte Elemente:** - HTML-Tags und Attribute - Code innerhalb der `
`-Tags
- C++-spezifische Begriffe (`#include`, `int main`, `auto`, `const`, `std::string`, `assert`, etc.)
- String-Literal `"C++"`

Siehe auch

In-Place-Konstruktions-Tag
(Tag)
zeigt an, dass Elemente eines Bereichs sortiert sind (Eindeutigkeit nicht erforderlich)
(Tag)
zeigt an, dass Elemente eines Bereichs sortiert und eindeutig sind
(Tag)
(C++23)
konstruiert ein neues Nicht-View-Objekt aus einem Eingabebereich
(Funktions-Template)