std::inplace_vector<T,N>:: insert_range
|
template
<
container-compatible-range
<
T
>
R
>
constexpr iterator insert_range ( const_iterator pos, R && rg ) ; |
(seit C++26) | |
Fügt, in nicht umgekehrter Reihenfolge, Kopien der Elemente in rg vor pos ein.
| Dieser Abschnitt ist unvollständig |
Jeder Iterator im Bereich rg wird genau einmal dereferenziert.
Wenn rg sich mit * this überschneidet, ist das Verhalten undefiniert.
Inhaltsverzeichnis |
Parameter
| pos | - |
Iterator vor dem der Inhalt eingefügt wird (
pos
kann der
end()
Iterator sein)
|
| rg | - |
ein
container-kompatibler Bereich
, also ein
input_range
, dessen Elemente in
T
konvertierbar sind
|
| Typanforderungen | ||
-
|
||
Rückgabewert
Ein Iterator auf das erste in * this eingefügte Element, oder pos falls rg leer ist.
Ausnahmen
- std::bad_alloc , falls ranges:: distance ( rg ) + size ( ) > capacity ( ) . Die Elemente von * this werden nicht modifiziert.
-
Jede Ausnahme, die durch Einfügung (d.h. durch Kopier-/Move-Konstruktor, Move-/Kopier-Zuweisungsoperator von
T) oder durch eine LegacyInputIterator Operation ausgelöst wird. Die Elemente von * this im Bereich[ 0 ,pos)werden nicht modifiziert.
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
Siehe auch
|
fügt Elemente ein
(öffentliche Elementfunktion) |
|
|
fügt einen Bereich von Elementen am Ende hinzu
(öffentliche Elementfunktion) |
|
|
versucht, einen Bereich von Elementen am Ende hinzuzufügen
(öffentliche Elementfunktion) |