From cppreference.com
template<container-compatible-range<T>R>voidappend_range(R&&rg);(since C++23)Inserts copies of elements from the range rg before
, in non-reversing order.
All iterators (including the
iterator) are invalidated. No references are invalidated.
Each iterator in rg is dereferenced exactly once.
Parameters
Complexity
Linear in size of rg. The number of calls to the constructor of T is exactly equal to the std::ranges::size(rg)).
Exceptions
If an exception is thrown other than by the copy constructor, move constructor, assignment operator, or move assignment operator of T there are no effects. If an exception is thrown while inserting a single element at either end, there are no effects. Otherwise, if an exception is thrown by the move constructor of a non-
T, the effects are unspecified.
Notes
macroValueStdFeature
(C++23)
construction and insertion Example
Run this code
#include<cassert>#include<deque>#include<list>intmain(){autohead=std::deque{1,2,3,4};constautotail=std::list{-5,-6,-7};#ifdef __cpp_lib_containers_rangeshead.append_range(tail);#elsehead.insert(head.end(),tail.cbegin(),tail.cend());#endifassert((head==std::deque{1,2,3,4,-5,-6,-7}));}See also
(C++23)
adds a range of elements to the beginning
(public member function)(C++23)
inserts a range of elements
(public member function)adds an element to the end
(public member function)(C++11)
constructs an element in-place at the end
(public member function)