std::list<T,Allocator>::insert_range
Von cppreference.com
| template< container-compatible-range<T> R > 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.
Keine Iteratoren oder Referenzen werden ungü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 die Inhalte eingefügt werden (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 aus *ranges::begin(rg) in list sein. Andernfalls ist das Verhalten undefiniert. | ||
[edit] Rückgabewert
Ein iterator, der auf die Kopie des ersten eingefügten Elements in list oder auf pos zeigt, wenn 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 <list> #include <vector> int main() { auto container = std::list{1, 2, 3, 4}; auto pos = std::next(container.begin(), 2); assert(*pos == 3); const auto rg = std::vector{-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::list{1, 2, -1, -2, -3, 3, 4})); }
[edit] Siehe auch
| fügt Elemente ein (öffentliche Memberfunktion) | |
| (C++23) |
fügt einen Elementbereich am Anfang hinzu (öffentliche Memberfunktion) |
| (C++23) |
fügt einen Bereich von Elementen am Ende hinzu (öffentliche Memberfunktion) |