Namensräume
Varianten
Aktionen

std::deque<T,Allocator>::append_range

Von cppreference.com
< cpp‎ | container‎ | deque
 
 
 
 
template< container-compatible-range<T> R >
void append_range( R&& rg );
(seit C++23)

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

Alle Iteratoren (einschließlich des end()-Iterators) werden ungültig. Keine Referenzen werden ungültig.

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 EmplaceConstructible in deque aus *ranges::begin(rg) 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

Wenn eine andere Ausnahme als durch den Kopierkonstruktor, den Verschiebekonstruktor, den Zuweisungsoperator oder den Verschiebezweisuungsoperator von T ausgelöst wird, hat dies keine Auswirkungen. Wenn beim Einfügen eines einzelnen Elements an einem der Enden eine Ausnahme ausgelöst wird, hat dies keine Auswirkungen. Andernfalls, wenn durch den Verschiebekonstruktor eines nicht-CopyInsertable T eine Ausnahme ausgelöst wird, sind die Auswirkungen nicht spezifiziert.

Anmerkungen

Feature-Test-Makro Wert Std Feature
__cpp_lib_containers_ranges 202202L (C++23) Ranges-kompatible Konstruktion und Einfügung

[bearbeiten] Beispiel

#include <cassert>
#include <deque>
#include <list>
 
int main()
{
    auto head = std::deque{1, 2, 3, 4};
    const auto tail = std::list{-5, -6, -7};
#ifdef __cpp_lib_containers_ranges
    head.append_range(tail);
#else
    head.insert(head.end(), tail.cbegin(), tail.cend());
#endif
    assert((head == std::deque{1, 2, 3, 4, -5, -6, -7}));
}

[bearbeiten] Siehe auch

fügt einen Elementbereich am Anfang hinzu
(ö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)