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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::copy_backward - std::copy_backward

Synopsis
	  Defined in header <algorithm>
	  template< class BidirIt1, class BidirIt2 >
	  BidirIt2  copy_backward(  BidirIt1  first,  BidirIt1	last, BidirIt2
       (until C++20)
	  d_last );
	  template< class BidirIt1, class BidirIt2 >
	  constexpr BidirIt2 copy_backward(  BidirIt1  first,  BidirIt1	 last,
       (since C++20)
	  BidirIt2 d_last );

	  Copies the elements from the range, defined by [first, last),	to an-
       other range
	  ending at d_last. The	elements are copied in reverse order (the last
       element is
	  copied first), but their relative order is preserved.

	  The  behavior	 is  undefined	if  d_last  is	within	(first,	last].
       std::copy must be used
	  instead of std::copy_backward	in that	case.

Parameters
	  first, last	   -	  the range of the elements to copy from
	  d_last	   -	  the end of the destination range

Type requirements
	  -
	  BidirIt must meet the	requirements of	LegacyBidirectionalIterator.

Return value
	  iterator to the last element copied.

Complexity
	  Exactly last - first assignments.

Notes
	  When copying overlapping ranges, std::copy is	appropriate when copy-
       ing to the left
	  (beginning of	the destination	range is  outside  the	source	range)
       while
	  std::copy_backward  is appropriate when copying to the right (end of
       the destination
	  range	is outside the source range).

Possible implementation
	  template< class BidirIt1, class BidirIt2 >
	  BidirIt2  copy_backward(BidirIt1  first,  BidirIt1  last,   BidirIt2
       d_last)
	  {
	      while (first != last) {
		  *(--d_last) =	*(--last);
	      }
	      return d_last;
	  }

Example
       // Run this code

	#include <algorithm>
	#include <iostream>
	#include <vector>

	int main()
	{
	    std::vector<int> from_vector;
	    for	(int i = 0; i <	10; i++) {
		from_vector.push_back(i);
	    }

	    std::vector<int> to_vector(15);

	    std::copy_backward(from_vector.begin(), from_vector.end(), to_vec-
       tor.end());

	    std::cout << "to_vector contains: ";
	    for	(auto i: to_vector) {
		std::cout << i << " ";
	    }
	 }

Output:
	to_vector contains: 0 0	0 0 0 0	1 2 3 4	5 6 7 8	9

See also
	  copy			copies a range of elements to a	new location
	  copy_if		(function template)
	  (C++11)
	  ranges::copy_backward	copies a range of elements in backwards	order
	  (C++20)		(niebloid)

http://cppreference.com		  2022.07.31		 std::copy_backward(3)

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

home | help