Namensräume
Varianten
Aktionen

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

Von cppreference.com
 
 
 
 
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() in nicht-umgekehrter Reihenfolge ein.


Jeder Iterator in rg wird genau einmal dereferenziert.

Inhalt

[bearbeiten] Parameter

rg - Ein Container-kompatibler Bereich, d. h. ein input_range, dessen Elemente in T konvertierbar sind
Typanforderungen
-
T muss von *ranges::begin(rg) in inplace_vector EmplaceConstructible sein. Andernfalls ist das Verhalten undefiniert.

[bearbeiten] Rückgabewert

(keine)

[bearbeiten] Komplexität

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

[bearbeiten] Ausnahmen

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

[bearbeiten] 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

[bearbeiten] Siehe auch

versucht, einen Bereich von Elementen am Ende hinzuzufügen
(öffentliche Memberfunktion)
fügt einen Bereich von Elementen ein
(öffentliche Memberfunktion)
fügt ein Element am Ende hinzu
(öffentliche Memberfunktion)
konstruiert ein Element direkt (in-place) am Ende
(öffentliche Memberfunktion)