std::vector<T,Allocator>::insert_range
Von cppreference.com
| template< container-compatible-range<T> R > constexpr iterator insert_range( const_iterator pos, R&& rg ); |
(seit C++23) | |
Fügt Kopien von Elementen aus rg in nicht umgekehrter Reihenfolge vor pos ein.
Wenn nach der Operation die neue size() größer ist als die alte capacity(), findet eine Reallokation statt, in diesem Fall werden alle Iteratoren (einschließlich des end() Iterators) und alle Referenzen auf die Elemente ungültig. Andernfalls bleiben nur die Iteratoren und Referenzen vor dem Einfügepunkt gültig.
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 in vector aus *ranges::begin(rg) EmplaceConstructible sein. Außerdem muss T in vector MoveInsertable sein und T muss MoveConstructible, MoveAssignable und Swappable erfüllen. Andernfalls ist das Verhalten undefiniert. | ||
[edit] Rückgabewert
Ein iterator, der auf die Kopie des ersten in vector eingefügten Elements oder auf pos zeigt, falls rg leer ist.
Anmerkungen
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_containers_ranges |
202202L |
(C++23) | Ranges-kompatible Konstruktion und Einfügung |
[edit] Beispiel
Führen Sie diesen Code aus
#include <algorithm> #include <cassert> #include <iterator> #include <vector> #include <list> int main() { auto container = std::vector{1, 2, 3, 4}; auto pos = std::next(container.begin(), 2); assert(*pos == 3); const auto rg = std::list{-1, -2, -3}; #ifdef __cpp_lib_containers_ranges container.insert_range(pos, rg); #else container.insert(pos, rg.cbegin(), rg.cend()); #endif assert(std::ranges::equal(container, std::vector{1, 2, -1, -2, -3, 3, 4})); }
[edit] Siehe auch
| fügt Elemente ein (öffentliche Memberfunktion) | |
| (C++23) |
fügt einen Bereich von Elementen am Ende hinzu (öffentliche Memberfunktion) |