Namensräume
Varianten
Aktionen

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

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

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)

Ausnahmen

  • bad_alloc, wenn std::ranges::distance(rg) > capacity().
  • Jede Ausnahme, die bei der Initialisierung eines eingefügten Elements ausgelöst wird.

[bearbeiten] 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); // throws: bad.size() > destination.capacity()
    }
    catch(const std::bad_alloc& ex)
    {
        std::cout << ex.what() << '\n';
    }
}

Mögliche Ausgabe

std::bad_alloc

[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)