Namespaces
Variants

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

From cppreference.net

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

Fügt Kopien von Elementen aus dem Bereich rg vor end() ein, in nicht umgekehrter Reihenfolge.


Jeder Iterator in rg wird genau einmal dereferenziert.

Inhaltsverzeichnis

Parameter

rg - ein container compatible range , also ein input_range , dessen Elemente konvertierbar zu T sind
Typanforderungen
-
Wenn T nicht EmplaceConstructible in inplace_vector aus * ranges:: begin ( rg ) ist, ist das Verhalten undefiniert.

Komplexität

Linear in der Größe von rg . Die Anzahl der Aufrufe des Konstruktors von T ist genau gleich std :: ranges:: size ( rg ) ) .

Ausnahmen

Wirft std::bad_alloc falls std :: ranges:: size ( rg ) > N . Wenn eine Ausnahme ausgelöst wird, die nicht vom Kopierkonstruktor, Move-Konstruktor, Zuweisungsoperator oder Move-Zuweisungsoperator von T oder durch eine InputIterator -Operation stammt, gibt es keine Effekte. Andernfalls, wenn eine Ausnahme ausgelöst wird, dann gilt size ( ) >= n und Elemente im Bereich [ 0 , n ) sind unverändert, wobei n der Wert von size() vor diesem Aufruf ist.

Beispiel

#include <cassert>
#include <inplace_vector>
#include <iostream>
int main()
{
    using I = std::inplace_vector<int, 8>;
    auto head = I{1, 2, 3, 4};
    const auto tail = {-5, -6, -7};
    head.append_range(tail);
    assert(head.size() == 7 and (head == I{1, 2, 3, 4, -5, -6, -7}));
    try
    {
        head.append_range(tail); // throws: no space
    {
    catch(const std::bad_alloc&)
    {
        std::cout << "std::bad_alloc\n";
    }
}

Ausgabe:

std::bad_alloc

Siehe auch

versucht, eine Reihe von Elementen am Ende hinzuzufügen
(öffentliche Elementfunktion)
fügt eine Reihe von Elementen ein
(öffentliche Elementfunktion)
fügt ein Element am Ende hinzu
(öffentliche Elementfunktion)
konstruiert ein Element direkt am Ende
(öffentliche Elementfunktion)