std::inplace_vector<T,N>::append_range
Von cppreference.com
< cpp | container | inplace vector
| 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 [0, n) bleiben unverändert, wobei n der Wert von size() vor diesem Aufruf ist.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#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) |