std::inplace_vector<T,N>::insert_range
Von cppreference.com
< cpp | container | inplace vector
| 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.
| Dieser Abschnitt ist unvollständig |
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[0,pos)werden nicht modifiziert.
[edit] Beispiel
Führen Sie diesen Code aus
#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) |