(C++17) | ||||
Sequence | ||||
(C++11) | ||||
(C++26) | ||||
(C++26) | ||||
(C++11) | ||||
Associative | ||||
Unordered associative | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
Adaptors | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
Views | ||||
(C++20) | ||||
(C++23) | ||||
Tables | ||||
Iterator invalidation | ||||
Member function table | ||||
Non-member function table |
Member types | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Member functions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Non-member functions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Deduction guides(C++17) |
template<container-compatible-range<T> R> constexprvoid append_range( R&& rg); | (since C++23) | |
Inserts copies of elements from the rangerg beforeend()
, in non-reversing order.
If after the operation the newsize()
is greater than oldcapacity()
a reallocation takes place, in which case all iterators (including theend()
iterator) and all references to the elements are invalidated. Otherwise only theend()
iterator is invalidated.
Each iterator inrg is dereferenced exactly once.
Contents |
rg | - | acontainer compatible range, that is, aninput_range whose elements are convertible toT |
Type requirements | ||
-If any of the following conditions is satisfied, the behavior is undefined:
|
If reallocation happens, linear in the number of elements of the resultingvector
; otherwise, linear in the number of elements inserted plus the distance to theend()
.
If one of the following conditions is satisfied, performs at most one reallocation:
| (since C++26) |
If an exception is thrown other than by the copy constructor, move constructor, assignment operator, or move assignment operator ofT
or by anyInputIterator
operation there are no effects. If an exception is thrown while inserting a single element at the end andT
isCopyInsertable orstd::is_nothrow_move_constructible_v<T>
istrue, there are no effects. Otherwise, if an exception is thrown by the move constructor of a non-CopyInsertableT
, the effects are unspecified.
Feature-test macro | Value | Std | Feature |
---|---|---|---|
__cpp_lib_containers_ranges | 202202L | (C++23) | Ranges-aware construction and insertion |
#include <cassert>#include <vector>#include <list> int main(){auto head=std::vector{1,2,3,4};constauto tail=std::list{-5,-6,-7};#ifdef __cpp_lib_containers_ranges head.append_range(tail);#else head.insert(head.end(), tail.cbegin(), tail.cend());#endifassert((head==std::vector{1,2,3,4,-5,-6,-7}));}
(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) |