std::inplace_vector<T,N>::try_append_range
| template< container-compatible-range<T> R > constexpr std::ranges::borrowed_iterator_t<R> try_append_range( R&& rg ); |
(seit C++26) | |
Hängt Kopien der anfänglichen Elemente von rg an end() an, bis alle Elemente eingefügt sind oder der interne Speicher erschöpft ist (d.h. size() == capacity() true ist).
Alle Iteratoren und Referenzen bleiben gültig. Der end() Iterator wird ungültig.
Jeder Iterator in rg wird höchstens einmal dereferenziert.
Inhalt |
[edit] Parameter
| rg | - | Ein Container-kompatibler Bereich, d. h. ein input_range, dessen Elemente in T konvertierbar sind |
| Typanforderungen | ||
-T muss in inplace_vector aus *ranges::begin(rg) EmplaceConstructible sein. Andernfalls ist das Verhalten undefiniert. | ||
[edit] Rückgabewert
Ein Iterator, der auf das erste Element von rg zeigt, das nicht in *this eingefügt wurde, oder ranges::end(rg), wenn kein solches Element vorhanden ist.
[edit] Komplexität
Linear in der Anzahl der eingefügten Elemente.
[edit] Ausnahmen
Jede Ausnahme, die bei der Initialisierung eines eingefügten Elements ausgelöst wird.
inplace_vector bietet die grundlegende Ausnahme-Sicherheitsgarantie, d.h. alle Elemente des Containers vor dem Aufruf bleiben erhalten, und alle bereits eingefügten Elemente (vor der Ausnahme, falls vorhanden) bleiben ebenfalls erhalten.
[edit] Hinweise
| Dieser Abschnitt ist unvollständig Grund: Erklären Sie den Zweck dieser API. |
[edit] Beispiel
#include <cassert> #include <initializer_list> #include <inplace_vector> int main() { using I = std::inplace_vector<int, 8>; auto nums = I{1, 2, 3}; const auto rg = {-1, -2, -3}; auto it = nums.try_append_range(rg); assert(nums.size() == 6); assert((nums == I{1, 2, 3, -1, -2, -3})); assert(it == rg.end()); it = nums.try_append_range(rg); assert(nums.size() == 8); assert((nums == I{1, 2, 3, -1, -2, -3, -1, -2})); assert(it == rg.begin() + 2); }
[edit] Siehe auch
| fügt einen Bereich von Elementen am Ende hinzu (public member function) | |
| fügt ein Element am Ende hinzu (public member function) | |
| versucht, ein Element am Ende hinzuzufügen (public member function) | |
| fügt bedingungslos ein Element am Ende hinzu (public member function) | |
| konstruiert ein Element direkt (in-place) am Ende (public member function) | |
| versucht, ein Element inplace am Ende zu konstruieren (public member function) | |
| konstruiert bedingungslos ein Element inplace am Ende (public member function) | |
| entfernt das letzte Element (public member function) | |
| erstellt einen std::back_insert_iterator vom Typ, der aus dem Argument abgeleitet wird (Funktionsvorlage) |