Namensräume
Varianten
Aktionen

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

Von cppreference.com
 
 
 
 
template< container-compatible-range<T> R >
constexpr iterator insert_range( const_iterator pos, R&& rg );
(seit C++26)

Fügt Kopien von Elementen aus rg in nicht umgekehrter Reihenfolge vor pos ein.

Jeder Iterator im Bereich rg wird genau einmal dereferenziert.

rg darf sich nicht mit dem Container überlappen. Andernfalls ist das Verhalten undefiniert.

Inhalt

[edit] Parameter

pos - Iterator, vor dem der Inhalt eingefügt wird (pos kann der end()-Iterator sein)
rg - Ein Container-kompatibler Bereich, d. h. ein input_range, dessen Elemente in T konvertierbar sind
Typanforderungen
-
T muss EmplaceConstructible in inplace_vector aus *ranges::begin(rg) sein. Andernfalls ist das Verhalten undefiniert.

[edit] Rückgabewert

Ein iterator, der auf die Kopie des ersten in inplace_vector eingefügten Elements oder auf pos zeigt, wenn rg leer ist.

Ausnahmen

  • std::bad_alloc, wenn ranges::distance(rg) + size() > capacity(). Die Elemente von *this werden nicht modifiziert.
  • Jede Ausnahme, die durch das Einfügen ausgelöst wird (d. h. durch den Kopier-/Konstruktor, den Zuweisungsoperator für Verschiebung/Kopie von T) oder durch eine beliebige LegacyInputIterator-Operation. Die Elemente von *this im Bereich [0pos) werden nicht modifiziert.

[edit] Beispiel

#include <cassert>
#include <inplace_vector>
#include <iterator>
#include <new>
#include <print>
 
int main()
{
    auto v = std::inplace_vector<int, 8>{0, 1, 2, 3};
    auto pos = std::next(v.begin(), 2);
    assert(*pos == 2);
    const auto rg = {-1, -2, -3};
    v.insert_range(pos, rg);
    std::println("{}", v);
 
    try
    {
        assert(v.size() + rg.size() > v.capacity());
        v.insert_range(pos, rg); // throws: no space
    }
    catch(const std::bad_alloc& ex)
    {
        std::println("{}", ex.what());
    }
}

Mögliche Ausgabe

[0, 1, -1, -2, -3, 2, 3]
std::bad_alloc

[edit] Siehe auch

fügt Elemente ein
(öffentliche Memberfunktion)
fügt einen Bereich von Elementen am Ende hinzu
(öffentliche Memberfunktion)
versucht, einen Bereich von Elementen am Ende hinzuzufügen
(öffentliche Memberfunktion)