Namensräume
Varianten
Aktionen

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

Von cppreference.com
< cpp‎ | container‎ | vector
 
 
 
 
template< container-compatible-range<T> R >
constexpr 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 sind 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 in den Container aus *ranges::begin(rg) EmplaceConstructible sein. Wenn R weder sized_range noch forward_range modelliert, muss T außerdem in den Container MoveInsertable 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 <vector>
#include <list>
 
int main()
{
    const auto source = std::list{2, 7, 1};
    auto destination = std::vector{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 ein
(öffentliche Memberfunktion)
fügt einen Bereich von Elementen am Ende hinzu
(öffentliche Memberfunktion)
weist dem Container Werte zu
(öffentliche Memberfunktion)
weist dem Container Werte zu
(öffentliche Memberfunktion)