Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::vector::append_range(3)  C++ Standard Libary std::vector::append_range(3)

NAME
       std::vector::append_range - std::vector::append_range

Synopsis
	  template< container-compatible-range<T> R >  (since C++23)
	  constexpr void append_range( R&& rg );

	  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()	itera-
       tor) and	all
	  references to	the elements are invalidated. Otherwise	only the end()
       iterator	is
	  invalidated.

	  Each iterator	in rg is dereferenced exactly once.

Parameters
	  rg		-	    a container	compatible range, that is,  an
       input_range
				    whose elements are convertible to T

Type requirements
	  -
	  T  must be EmplaceConstructible into vector from *ranges::begin(rg).
       Also, T must be
	  MoveInsertable into vector. Otherwise, the behavior is undefined.

Return value
	  (none)

Complexity
	  If reallocation happens, linear in the number	of elements of the re-
       sulting vector;
	  otherwise, linear in the number of elements inserted plus  the  dis-
       tance 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  In-
       putIterator
	  operation  there are no effects. If an exception is thrown while in-
       serting a single
	  element at the end and T is CopyInsertable or
	  std::is_nothrow_move_constructible_v<T> is true, there  are  no  ef-
       fects. Otherwise, if
	  an  exception	 is  thrown  by	 the move constructor of a non-CopyIn-
       sertable	T, the
	  effects are unspecified.

Notes
	      Feature-test macro       Value	Std		      Feature
	  __cpp_lib_containers_ranges 202202L (C++23)  Ranges-aware  construc-
       tion and	insertion

Example
       // Run this code

	#include <algorithm>
	#include <cassert>
	#include <vector>
	#include <list>

	int main()
	{
	    auto head =	std::vector{1, 2, 3, 4};
	    const auto tail = std::list{-5, -6,	-7};
	#ifdef __cpp_lib_containers_ranges
	    head.append_range(tail);
	#else
	    head.insert(head.end(), tail.cbegin(), tail.cend());
	#endif
	    assert(std::ranges::equal(head,  std::vector{1,  2,	 3, 4, -5, -6,
       -7}));
	}

See also
	  insert_range inserts a range of elements
	  (C++23)      (public member function)
	  push_back    adds an element to the end
		       (public member function)
	  emplace_back constructs an element in-place at the end
	  (C++11)      (public member function)

http://cppreference.com		  2024.06.10	  std::vector::append_range(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::vector::append_range&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help