Namespaces
Variants

std::inplace_vector<T,N>:: assign_range

From cppreference.net

template < container-compatible-range < T > R >
constexpr void assign_range ( R && rg ) ;
(seit C++26)

Ersetzt Elemente im Container durch eine Kopie jedes Elements in rg .

Jeder Iterator im Bereich rg wird genau einmal dereferenziert.

Wenn rg sich mit * this überschneidet, ist das Verhalten undefiniert.

Inhaltsverzeichnis

Parameter

rg - ein input_range mit Referenztyp, der in den Elementtyp des Containers konvertierbar ist
Typanforderungen
-
Falls std:: assignable_from < T & , ranges:: range_reference_t < R >> nicht modelliert wird, ist das Programm fehlerhaft.
-
Falls T nicht EmplaceConstructible in inplace_vector aus * ranges:: begin ( rg ) ist, ist das Verhalten undefiniert.

Ausnahmen

Beispiel

#include <algorithm>
#include <cassert>
#include <initializer_list>
#include <inplace_vector>
#include <iostream>
#include <new>
int main()
{
    const auto source = {1, 2, 3};
    std::inplace_vector<int, 4> destination{4, 5};
    destination.assign_range(source);
    assert(std::ranges::equal(destination, source));
    try
    {
        const auto bad = {-1, -2, -3, -4, -5};
        destination.assign_range(bad); // wirft Exception: bad.size() > destination.capacity()
    }
    catch(const std::bad_alloc& ex)
    {
        std::cout << ex.what() << '\n';
    }
}

Mögliche Ausgabe:

std::bad_alloc

Siehe auch

fügt eine Reihe von Elementen ein
(öffentliche Elementfunktion)
fügt eine Reihe von Elementen am Ende hinzu
(öffentliche Elementfunktion)
weist dem Container Werte zu
(öffentliche Elementfunktion)
weist dem Container Werte zu
(öffentliche Elementfunktion)