Namensräume
Varianten
Aktionen

std::list<T,Allocator>::insert_range

Von cppreference.com
< cpp‎ | container‎ | list
 
 
 
 
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

#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)
fügt einen Elementbereich am Anfang hinzu
(öffentliche Memberfunktion)
fügt einen Bereich von Elementen am Ende hinzu
(öffentliche Memberfunktion)