Namensräume
Varianten
Aktionen

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

Von cppreference.com
 
 
 
 
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

[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) [edit]
fügt ein Element am Ende hinzu
(public member function) [edit]
versucht, ein Element am Ende hinzuzufügen
(public member function) [edit]
fügt bedingungslos ein Element am Ende hinzu
(public member function) [edit]
konstruiert ein Element direkt (in-place) am Ende
(public member function) [edit]
versucht, ein Element inplace am Ende zu konstruieren
(public member function) [edit]
konstruiert bedingungslos ein Element inplace am Ende
(public member function) [edit]
entfernt das letzte Element
(public member function) [edit]
erstellt einen std::back_insert_iterator vom Typ, der aus dem Argument abgeleitet wird
(Funktionsvorlage) [bearbeiten]