std::forward_list<T,Allocator>::assign_range
Von cppreference.com
< cpp | container | forward list
| template< container-compatible-range<T> R > void assign_range( R&& rg ); |
(seit C++23) | |
Ersetzt Elemente im Container durch eine Kopie jedes Elements in rg.
Alle Iteratoren (einschließlich des end() Iterators) und alle Referenzen auf die Elemente werden ungültig.
Jeder Iterator im Bereich rg wird genau einmal dereferenziert.
Das Verhalten ist undefiniert, wenn rg mit dem Container überlappt.
Inhalt |
[bearbeiten] Parameter
| rg | - | ein input_range mit einem Referenztyp, der in den Elementtyp des Containers konvertierbar ist |
| Typanforderungen | ||
| -std::assignable_from<T&, ranges::range_reference_t<R>> muss modelliert sein. Andernfalls ist das Programm fehlerhaft. | ||
-T muss aus *ranges::begin(rg) in den Container EmplaceConstructible sein. Andernfalls ist das Verhalten undefiniert. | ||
[bearbeiten] Rückgabewert
(keine)
Anmerkungen
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_containers_ranges |
202202L |
(C++23) | Ranges-kompatible Konstruktion und Einfügung |
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <algorithm> #include <cassert> #include <forward_list> #include <list> int main() { const auto source = std::list{2, 7, 1}; auto destination = std::forward_list{3, 1, 4}; #ifdef __cpp_lib_containers_ranges destination.assign_range(source); #else destination.assign(source.cbegin(), source.cend()); #endif assert(std::ranges::equal(source, destination)); }
[bearbeiten] Siehe auch
| (C++23) |
fügt einen Bereich von Elementen nach einem Element ein (öffentliche Memberfunktion) |
| (C++23) |
fügt einen Elementbereich am Anfang hinzu (öffentliche Memberfunktion) |
| weist dem Container Werte zu (öffentliche Memberfunktion) | |
| weist dem Container Werte zu (öffentliche Memberfunktion) |