Namespaces
Variants

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

From cppreference.net
template < container-compatible-range < T > R >
constexpr std :: ranges:: borrowed_iterator_t < R > try_append_range ( R && rg ) ;
(seit C++26)

Fügt Kopien der Anfangselemente in rg vor end() ein, bis alle Elemente eingefügt sind oder der interne Speicher erschöpft ist (d.h. size ( ) == capacity ( ) den Wert true hat).

Alle Iteratoren und Referenzen bleiben gültig. Der end() Iterator wird ungültig.

Jeder Iterator in rg wird höchstens einmal dereferenziert.

Inhaltsverzeichnis

Parameter

rg - ein container compatible range , also ein input_range , dessen Elemente konvertierbar zu T sind
Typanforderungen
-
T muss EmplaceConstructible in inplace_vector aus * ranges:: begin ( rg ) sein. Andernfalls ist das Verhalten undefiniert.

Rückgabewert

Ein Iterator, der auf das erste Element von rg zeigt, das nicht in * this eingefügt wurde, oder ranges:: end ( rg ) falls kein solches Element existiert.

Komplexität

Linear in der Anzahl der eingefügten Elemente.

Ausnahmen

Jede Ausnahme, die durch die Initialisierung des eingefügten Elements ausgelöst wird.

inplace_vector bietet die grundlegende Ausnahmesicherheitsgarantie , d.h. alle Elemente des Containers vor dem Aufruf werden erhalten, und alle bereits eingefügten Elemente (vor der Ausnahme, falls vorhanden) werden ebenfalls erhalten.

Hinweise

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);
}

Siehe auch

fügt eine Reihe von Elementen am Ende hinzu
(öffentliche Elementfunktion)
fügt ein Element am Ende hinzu
(öffentliche Elementfunktion)
versucht, ein Element am Ende hinzuzufügen
(öffentliche Elementfunktion)
fügt bedingungslos ein Element am Ende hinzu
(öffentliche Elementfunktion)
konstruiert ein Element direkt am Ende
(öffentliche Elementfunktion)
versucht, ein Element direkt am Ende zu konstruieren
(öffentliche Elementfunktion)
konstruiert bedingungslos ein Element direkt am Ende
(öffentliche Elementfunktion)
entfernt das letzte Element
(öffentliche Elementfunktion)
erstellt einen std::back_insert_iterator vom aus dem Argument abgeleiteten Typ
(Funktionstemplate)