Namespaces
Variants

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

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

Hängt Kopien der ersten Elemente in rg vor end() an, bis alle Elemente eingefügt sind oder der interne Speicher erschöpft ist (d.h. size() == capacity() ist true).

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

Jeder Iterator in rg wird höchstens einmal dereferenziert.

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.

Anmerkungen

Feature-Test Makro Wert Std Feature
__cpp_lib_inplace_vector 202603L (C++26) Entfernt try_append_range

Beispiel

#include <cassert>
#include <initializer_list>
#include <inplace_vector>

int main()
{
#if defined(__cpp_lib_inplace_vector) and (__cpp_lib_inplace_vector < 202603L)
    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);
#endif
}

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)