From cppreference.com
template<container-compatible-range<T>R>iteratorinsert_range(const_iteratorpos,R&&rg);(since C++23)Inserts, in non-reversing order, copies of elements in rg before pos.
All iterators (including the
iterator) are invalidated. References are invalidated too, unless pos==
or pos==
, in which case they are not invalidated.
Each iterator in the range rg is dereferenced exactly once.
rg must not overlap with the container. Otherwise, the behavior is undefined.
Parameters
pos - iterator before which the content will be inserted (pos may be the
iterator) rg - a
, that is, an
whose elements are convertible to TType requirements -T must be
into deque from *ranges::begin(rg). Also, T must be
into deque and T must satisfy
,
, and
. Otherwise, the behavior is undefined. Return value
An
that points at the copy of the first element inserted into deque or at pos if rg is empty.
Notes
macroValueStdFeature
(C++23)
construction and insertion Example
Run this code
#include<algorithm>#include<cassert>#include<iterator>#include<deque>#include<list>intmain(){autocontainer=std::deque{1,2,3,4};autopos=std::next(container.begin(),2);assert(*pos==3);constautorg=std::list{-1,-2,-3};#ifdef __cpp_lib_containers_rangescontainer.insert_range(pos,rg);#elsecontainer.insert(pos,rg.cbegin(),rg.cend());#endifassert(std::ranges::equal(container,std::deque{1,2,-1,-2,-3,3,4}));}See also
inserts elements
(public member function)(C++23)
adds a range of elements to the beginning
(public member function)(C++23)
adds a range of elements to the end
(public member function)