Condividi tramite


copy_backward

L'assegnazione dei valori degli elementi da un intervallo di origine in un intervallo di destinazione, ripetenti con la sequenza di origine di elementi e assegnare loro le nuove posizioni indietro in una direzione.

template<class BidirectionalIterator1, class BidirectionalIterator2>
   BidirectionalIterator2 copy_backward(
      BidirectionalIterator1 _First, 
      BidirectionalIterator1 _Last,
      BidirectionalIterator2 _DestEnd
   );

Parametri

  • _First
    Un iteratore bidirezionale destinato alla posizione del primo elemento nell'intervallo di origine.

  • _Last
    Un iteratore bidirezionale destinato alla posizione che è una dopo l'elemento finale nell'intervallo di origine.

  • _DestEnd
    Un iteratore bidirezionale destinato alla posizione di tale dopo l'elemento finale nell'intervallo di destinazione.

Valore restituito

Un iteratore di output destinato alla posizione che è una dopo l'elemento finale nell'intervallo di destinazione, ovvero, un iteratore è destinato a *_DestEnd *– (_Last – _First ).

Note

L'intervallo di origine sia valido e deve essere spazio sufficiente per la destinazione per utilizzare tutti gli elementi copiati.

L'algoritmo copy_backward impone i requisiti più rigorosi che tali l'algoritmo di copia.Sia gli iteratori di output di input devono essere bidirezionali.

L'algoritmo copy_backward è l'unico algoritmo di una libreria di modelli standard che definisce l'intervallo di output con un iteratore che punta alla fine dell'intervallo di destinazione.

Poiché l'algoritmo copia gli elementi di origine in base a partire dall'ultimo elemento, l'intervallo di destinazione può far coincidere con l'intervallo di origine fornito la posizione _Firstintervallo di origine non è contenuto nell'intervallo di destinazione.copy_backward può essere utilizzato per scorrere gli elementi a destra ma non a sinistra, a meno che non vengano sovrapposizione tra origine e gli intervalli di destinazione.Per scorrere a sinistra qualsiasi numero di posizioni, utilizzare l'algoritmo copia.

L'algoritmo copy_backward modifica solo i valori puntati dagli iteratori, assegnare nuovi valori agli elementi dell'intervallo di destinazione.Non può essere utilizzato per creare nuovi elementi e non può inviare direttamente gli elementi in un contenitore vuoto.

copy_backward dispone di due form correlati:

Per informazioni su come queste funzioni si comportano, vedere Iteratori verificati.

Esempio

// 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;
}

Output

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 )

Requisiti

intestazione: <algorithm>

Spazio dei nomi: deviazione standard

Vedere anche

Riferimenti

Libreria di modelli standard