(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 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
template<container-compatible-range<T> R> constexprvoid append_range( R&& rg); | (since C++26) | |
Inserts copies of elements from the rangerg beforeend(), in non-reversing order.
Each iterator inrg is dereferenced exactly once.
Contents |
| rg | - | acontainer compatible range, that is, aninput_range whose elements are convertible toT |
| Type requirements | ||
-IfT is notEmplaceConstructible intoinplace_vector from*ranges::begin(rg), the behavior is undefined. | ||
Linear in size ofrg. The number of calls to the constructor ofT is exactly equal to thestd::ranges::size(rg)).
Throwsstd::bad_alloc ifstd::ranges::size(rg)> N.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.Otherwise, if an exception is thrown, thensize()>= n and elements in the range[0, n) are not modified,wheren is the value ofsize() before this call.
#include <cassert>#include <inplace_vector>#include <iostream> int main(){using I=std::inplace_vector<int,8>; auto head= I{1,2,3,4};constauto tail={-5,-6,-7}; head.append_range(tail);assert(head.size()==7 and(head== I{1,2,3,4,-5,-6,-7})); try{ head.append_range(tail);// throws: no space}catch(conststd::bad_alloc&){std::cout<<"std::bad_alloc\n";}}
Output:
std::bad_alloc
| tries to add a range of elements to the end (public member function) | |
| inserts a range of elements (public member function) | |
| adds an element to the end (public member function) | |
| constructs an element in-place at the end (public member function) |