std::forward_list<T,Allocator>:: insert_range_after
From cppreference.net
<
cpp
|
container
|
forward list
|
template
<
container-compatible-range
<
T
>
R
>
iterator insert_range_after ( const_iterator pos, R && rg ) ; |
(seit C++23)
(constexpr seit C++26) |
|
Fügt Kopien der Elemente im Bereich rg nach pos ein. Jeder Iterator im Bereich rg wird genau einmal dereferenziert.
Wenn eine der folgenden Bedingungen erfüllt ist, ist das Verhalten undefiniert:
-
Tist nicht EmplaceConstructible inforward_listvon * ranges:: begin ( rg ) . -
pos
liegt nicht im Bereich
[before_begin(),end()). - rg und * this überlappen sich.
Keine Iteratoren oder Referenzen werden ungültig.
Inhaltsverzeichnis |
Parameter
| pos | - | ein Iterator, nach dem der Inhalt eingefügt wird |
| rg | - |
ein
container-kompatibler Bereich
, also ein
input_range
, dessen Elemente in
T
konvertierbar sind
|
Rückgabewert
Ein Iterator auf das letzte eingefügte Element, oder pos falls rg leer ist.
Komplexität
Linear in der Größe von rg .
Hinweise
| Feature-Test Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Ranges-basierte Konstruktion und Einfügung |
Beispiel
Diesen Code ausführen
#include <algorithm> #include <cassert> #include <forward_list> #include <iterator> #include <vector> int main() { auto container = std::forward_list{1, 2, 3, 4}; auto pos = std::next(container.cbegin()); assert(*pos == 2); const auto rg = std::vector{-1, -2, -3}; #ifdef __cpp_lib_containers_ranges container.insert_range_after(pos, rg); #else container.insert_after(pos, rg.cbegin(), rg.cend()); #endif assert(std::ranges::equal(container, std::vector{1, 2, -1, -2, -3, 3, 4})); }
Siehe auch
|
(C++23)
|
fügt einen Bereich von Elementen am Anfang hinzu
(öffentliche Elementfunktion) |
|
fügt Elemente nach einem Element ein
(öffentliche Elementfunktion) |
|
|
konstruiert Elemente direkt nach einem Element
(öffentliche Elementfunktion) |