Namespaces
Variants

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

From cppreference.net

template < container-compatible-range < T > R >
void append_range ( R && rg ) ;
(seit C++23)
(constexpr seit C++26)

Fügt Kopien von Elementen aus dem Bereich rg vor end() ein, in nicht umgekehrter Reihenfolge.

Keine Iteratoren oder Referenzen werden ungültig.

Jeder Iterator in rg wird genau einmal dereferenziert.

Inhaltsverzeichnis

Parameter

rg - ein container kompatibler Bereich , also ein input_range , dessen Elemente konvertierbar zu T sind
Typanforderungen
-
Falls T nicht EmplaceConstructible in list von * ranges:: begin ( rg ) ist, ist das Verhalten undefiniert.

Komplexität

Linear in der Größe von rg . Die Anzahl der Aufrufe des Konstruktors von T ist genau gleich std :: ranges:: size ( rg ) ) .

Ausnahmen

Wenn aus irgendeinem Grund eine Exception ausgelöst wird, hat diese Funktion keine Wirkung ( strong exception safety guarantee ).

Hinweise

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

Beispiel

#include <cassert>
#include <list>
#include <vector>
int main()
{
    auto head = std::list{1, 2, 3, 4};
    const auto tail = std::vector{-5, -6, -7};
#ifdef __cpp_lib_containers_ranges
    head.append_range(tail);
#else
    head.insert(head.end(), tail.cbegin(), tail.cend());
#endif
    assert((head == std::list{1, 2, 3, 4, -5, -6, -7}));
}

Siehe auch

fügt einen Bereich von Elementen am Anfang hinzu
(öffentliche Elementfunktion)
fügt einen Bereich von Elementen ein
(öffentliche Elementfunktion)
fügt ein Element am Ende hinzu
(öffentliche Elementfunktion)
konstruiert ein Element direkt am Ende
(öffentliche Elementfunktion)