I have forgotten
my Password

Or login with:

  • Facebookhttp://facebook.com/
  • Googlehttps://www.google.com/accounts/o8/id
  • Yahoohttps://me.yahoo.com

copy_backward

Copies a range starting with the last element

Definition

The copy_backward() algorithm is defined in the standard header <algorithm> and in the nonstandard backward-compatibility header <algo.h>.

Interface

#include <algorithm>
template < class BidirectionalIterator1, class BidirectionalIterator2 >
   BidirectionalIterator2 copy_backward(
      BidirectionalIterator1 first, 
      BidirectionalIterator1 last,
      BidirectionalIterator2 result
   );

Parameters:
Parameter Description
first A bidirectional iterator addressing the position of the first element in the source range
last A bidirectional iterator addressing the position that is one past the final element in the source range
result A bidirectional iterator addressing the position of the one past the final element in the destination range

Description

Copy_backwards is the same as copy but the copy is made from the end of the source sequence to its beginning.

Return Value

Returns an iterator on the element following the last copied element, result - (last - first).

Complexity

The complexity is linear, there are last - first assignments.
Example:

Example - copy_backward algorithm
Problem
The following example demonstrates the difference between copy() and copy_backward().
Workings
#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int main()
{
  // initialize source collection with ".......... abcdef.........."
  vector<char> source(10,'.');
  for (int c='a'; c<='f'; C++) 
    source.push_back(c);

source.insert(source.end(),10,'.'); PRINT_ELEMENTS(source,"source: ");   //copy all letters three elements in front of the 'a' vector<char> c1(source.begin(),source.end()); copy (c1.begin()+10, c1.begin()+16, //source range c1.begin()+7); //destination range PRINT_ELEMENTS(c1,"c1: ");   //copy all letters three elements behind the 'f' vector<char> c2(source.begin(),source.end()); copy_backward (c2.begin()+10, c2.begin()+16, //source range c2.begin()+19); //destination range PRINT_ELEMENTS(c2,"c2: ");   return 0; }
Solution
Output:

source: . . . . . . . . . . a b c d e f . . . . . . . . . .
c1: . . . . . . . a b c d e f d e f . . . . . . . . . .
c2: . . . . . . . . . . a b c a b c d e f . . . . . . .
References
  • Nicolai M. Josuttis: "The C++ Standard Library"

See Also