std::vector<T,Allocator>::append_range - cppreference.com

From cppreference.com

template<container-compatible-range<T>R>constexprvoidappend_range(R&&rg);(since C++23)Inserts copies of elements from the range rg before

end()

, in non-reversing order.

If after the operation the new

size()

is greater than old

capacity()

a reallocation takes place, in which case all iterators (including the

end()

iterator) and all references to the elements are invalidated. Otherwise only the

end()

iterator is invalidated.

Each iterator in rg is dereferenced exactly once.

Parameters

Complexity

If reallocation happens, linear in the number of elements of the resulting vector; otherwise, linear in the number of elements inserted plus the distance to the

end()

.

Exceptions

If an exception is thrown other than by the copy constructor, move constructor, assignment operator, or move assignment operator of T or by any InputIterator operation there are no effects. If an exception is thrown while inserting a single element at the end and T is

CopyInsertable

or

std::is_nothrow_move_constructible_v

<T> is true, there are no effects. Otherwise, if an exception is thrown by the move constructor of a non-

CopyInsertable

T, the effects are unspecified.

Notes

Feature-test

macroValueStdFeature

__cpp_lib_containers_ranges

202202L

(C++23)

Ranges-aware

construction and insertion Example

Run this code

#include<cassert>#include<vector>#include<list>intmain(){autohead=std::vector{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::vector{1,2,3,4,-5,-6,-7}));}See also

(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)