copy_backward
Přiřadí hodnoty prvků ze zdrojové oblasti cílová oblast iterace zdroj posloupnost prvků a jejich nové pozice směrem dozadu.
template<class BidirectionalIterator1, class BidirectionalIterator2>
BidirectionalIterator2 copy_backward(
BidirectionalIterator1 _First,
BidirectionalIterator1 _Last,
BidirectionalIterator2 _DestEnd
);
Parametry
_First
Obousměrný iterace, který adresování pozici první prvek ve zdrojové oblasti._Last
Obousměrný iterace, který adresování pozici, která je jednou za poslední prvek ve zdrojové oblasti._DestEnd
Obousměrný iterace, který adresování jeden za poslední prvek pozice v cílové oblasti.
Vrácená hodnota
Iterátoru výstupní pozice, která je jednou za poslední prvek v cílové oblasti se adresování, iterace adresy _ DestEnd – (_Last – _First ).
Poznámky
Zdrojové oblasti musí být platný a musí být dostatek místa na cílovém držet všechny kopírované prvky.
copy_backward Algoritmus ukládá přísnější požadavky než algoritmus kopie.U obou jeho vstupní a výstupní iterátorů musí být obousměrný.
copy_backward Algoritmus je pouze standardní šablonu knihovny algoritmus iterátoru na konci cílové oblasti s vyznačením výstupní oblast.
Protože algoritmus zkopíruje zdrojové prvky v pořadí počínaje posledním prvkem, cílové oblasti mohou překrývat s zdrojové oblasti uvedené _First pozice zdrojové oblasti není obsažen v cílové oblasti.copy_backwardlze prvky Posun doprava, ale nikoli vlevo, pokud nedojde k překrývání mezi zdrojové a cílové oblasti.Posunutí vlevo libovolný počet pozic, použít copy algoritmus.
copy_backward Algoritmus upravuje pouze hodnoty odkazuje u iterátorů, přiřadíte nové hodnoty prvků v cílové oblasti.Nelze použít k vytvoření nové prvky a nelze vkládat prvky do prázdného kontejneru přímo.
copy_backwardmá dva související formuláře:
Informace o chování těchto funkcí naleznete v tématu Zaškrtnuté iterátory.
Příklad
// alg_copy_bkwd.cpp
// compile with: /EHsc
#include <vector>
#include <algorithm>
#include <iostream>
int main() {
using namespace std;
vector <int> v1, v2;
vector <int>::iterator Iter1, Iter2;
int i;
for ( i = 0 ; i <= 5 ; i++ )
v1.push_back( 10 * i );
int ii;
for ( ii = 0 ; ii <= 10 ; ii++ )
v2.push_back( 3 * ii );
cout << "v1 = ( " ;
for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
cout << *Iter1 << " ";
cout << ")" << endl;
cout << "v2 = ( " ;
for ( Iter2 = v2.begin( ) ; Iter2 != v2.end( ) ; Iter2++ )
cout << *Iter2 << " ";
cout << ")" << endl;
// To copy_backward the first 3 elements of v1 into the middle of v2
copy_backward( v1.begin( ), v1.begin( ) + 3, v2.begin( ) + 7 );
cout << "v2 with v1 insert = ( " ;
for ( Iter2 = v2.begin( ) ; Iter2 != v2.end( ) ; Iter2++ )
cout << *Iter2 << " ";
cout << ")" << endl;
// To shift the elements inserted into v2 two positions
// to the right
copy_backward( v2.begin( )+4, v2.begin( ) + 7, v2.begin( ) + 9 );
cout << "v2 with shifted insert = ( " ;
for ( Iter2 = v2.begin( ) ; Iter2 != v2.end( ) ; Iter2++ )
cout << *Iter2 << " ";
cout << ")" << endl;
}
Výsledek
v1 = ( 0 10 20 30 40 50 )
v2 = ( 0 3 6 9 12 15 18 21 24 27 30 )
v2 with v1 insert = ( 0 3 6 9 0 10 20 21 24 27 30 )
v2 with shifted insert = ( 0 3 6 9 0 10 0 10 20 27 30 )
Požadavky
Záhlaví: <algorithm>
Obor názvů: std