Namensräume
Varianten
Aktionen

std::forward_list<T,Allocator>::assign_range

Von cppreference.com
 
 
 
 
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

#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

fügt einen Bereich von Elementen nach einem Element ein
(öffentliche Memberfunktion)
fügt einen Elementbereich am Anfang hinzu
(öffentliche Memberfunktion)
weist dem Container Werte zu
(öffentliche Memberfunktion)
weist dem Container Werte zu
(öffentliche Memberfunktion)