I have forgotten

• https://me.yahoo.com

copy_backward

Copies a range starting with the last element
View version details

Key Facts

Gyroscopic Couple: The rate of change of angular momentum () = (In the limit).
• = Moment of Inertia.
• = Angular velocity
• = Angular velocity of precession.

Blaise Pascal (1623-1662) was a French mathematician, physicist, inventor, writer and Catholic philosopher.

Leonhard Euler (1707-1783) was a pioneering Swiss mathematician and physicist.

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.

References

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"