std::deque<T,Allocator>::insert_range - cppreference.com

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

end()

iterator) are invalidated. References are invalidated too, unless pos==

begin()

or pos==

end()

, 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

end()

iterator) rg - a

container compatible range

, that is, an

input_range

whose elements are convertible to TType requirements -T must be

EmplaceConstructible

into deque from *ranges::begin(rg). Also, T must be

MoveInsertable

into deque and T must satisfy

MoveConstructible

,

MoveAssignable

, and

Swappable

. Otherwise, the behavior is undefined. Return value

An

iterator

that points at the copy of the first element inserted into deque or at pos if rg is empty.

Notes

Feature-test

macroValueStdFeature

__cpp_lib_containers_ranges

202202L

(C++23)

Ranges-aware

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)