std::deque<T,Allocator>::append_range
| 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
| (C++23) |
fügt einen Elementbereich am Anfang hinzu (öffentliche Memberfunktion) |
| (C++23) |
fügt einen Bereich von Elementen ein (öffentliche Memberfunktion) |
| fügt ein Element am Ende hinzu (öffentliche Memberfunktion) | |
| (C++11) |
konstruiert ein Element direkt (in-place) am Ende (öffentliche Memberfunktion) |