Namespaces
Variants

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

From cppreference.net

template < container-compatible-range < T > R >
iterator insert_range ( const_iterator pos, R && rg ) ;
(seit C++23)
(constexpr seit C++26)

Fügt, in nicht umgekehrter Reihenfolge, Kopien der Elemente in rg vor pos ein.

Keine Iteratoren oder Referenzen werden ungültig.

Jeder Iterator im Bereich rg wird genau einmal dereferenziert.

Wenn rg sich mit * this überschneidet, ist das Verhalten undefiniert.

Inhaltsverzeichnis

Parameter

pos - Iterator, vor dem der Inhalt eingefügt wird ( pos kann der end() Iterator sein)
rg - Ein container-kompatibler Bereich , also ein input_range , dessen Elemente in T konvertierbar sind
Typanforderungen
-
Wenn T nicht EmplaceConstructible in list aus * ranges:: begin ( rg ) ist, ist das Verhalten undefiniert.

Rückgabewert

Ein Iterator auf das erste in * this eingefügte Element, oder pos falls rg leer ist.


Hinweise

Feature-Test Makro Wert Std Feature
__cpp_lib_containers_ranges 202202L (C++23) Ranges-bewusste Konstruktion und Einfügung

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}));
}

Siehe auch

fügt Elemente ein
(öffentliche Elementfunktion)
fügt eine Reihe von Elementen am Anfang hinzu
(öffentliche Elementfunktion)
fügt eine Reihe von Elementen am Ende hinzu
(öffentliche Elementfunktion)