Aracılığıyla paylaş


replace_copy

Her öğe, kaynak aralığı inceler ve yeni bir hedef aralığı sonucu kopyalanırken belirtilen değeri eşleşirse, yerini alır.

template<class InputIterator, class OutputIterator, class Type>
   OutputIterator replace_copy(
      InputIterator _First, 
      InputIterator _Last, 
      OutputIterator _Result,
      const Type& _OldVal, 
      const Type& _NewVal
   );

Parametreler

  • _First
    Öğeleri değiştirilmektedir aralıktaki ilk öğenin konumunu gösteren bir giriş Yineleyici.

  • _Last
    Pozisyonu bir son öğe geçmiş öğeleri değiştirilmektedir aralığı gösteren bir giriş Yineleyici.

  • _Result
    Değişen öğeleri dizisi nereden kopyalandığı için hedef aralıktaki ilk öğe gösteren bir çıkış Yineleyici.

  • _OldVal
    Değiştirilen öğeler eski değeri.

  • _NewVal
    Eski değer öğelerle atanan yeni değeri.

Dönüş Değeri

Çıkış Yineleyici konumu bir son öğe geçmiş öğelerinin değişen sıra nereden kopyalandığı için hedef aralık'ın üzerine gelerek.

Notlar

Başvurulan kaynak ve hedef aralıkların çakışmamaları gerekir ve her ikisi de geçerli olması gerekir: tüm imleçler dereferenceable ve sýralar içinde son konuma birinciden erişilebildiğinden tarafından incrementation.

Değiştirilmemişse öğelerin sırasını kararlı kalır.

operator== Öğeleri arasındaki eşitlik İşlenenlerini arasında bir eşdeğerlik ilişkisi tanıtamazlar gerekir belirlemek için kullanılır.

Doğrusal karmaşıklık: vardır (_Last – _First) eşitlik ve çoğu karşılaştırmaları (_Last – _First) yeni değerleri atamaları.

replace_copyiki ilişkili formlar:

Bu işlevler nasıl davranacağını hakkında bilgi için bkz: İşaretli Yineleyiciler.

Örnek

// alg_replace_copy.cpp
// compile with: /EHsc
#include <vector>
#include <list>
#include <algorithm>
#include <iostream>

int main( ) {
   using namespace std;
   vector <int> v1;
   list <int> L1 (15);
   vector <int>::iterator Iter1;
   list <int>::iterator L_Iter1;

   int i;
   for ( i = 0 ; i <= 9 ; i++ )
      v1.push_back( i );

   int ii;
   for ( ii = 0 ; ii <= 3 ; ii++ )
      v1.push_back( 7 );
   
   random_shuffle ( v1.begin( ), v1.end( ) );

   int iii;
   for ( iii = 0 ; iii <= 15 ; iii++ )
      v1.push_back( 1 );

   cout << "The original vector v1 is:\n ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")." << endl;

   // Replace elements in one part of a vector with a value of 7
   // with a value of 70 and copy into another part of the vector
   replace_copy ( v1.begin( ), v1.begin( ) + 14,v1.end( ) -15, 7 , 70);

   cout << "The vector v1 with a value 70 replacing that of 7 is:\n ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")." << endl;

   // Replace elements in a vector with a value of 70
   // with a value of 1 and copy into a list
   replace_copy ( v1.begin( ), v1.begin( ) + 14,L1.begin( ), 7 , 1);

   cout << "The list copy L1 of v1 with the value 0 replacing "
        << "that of 7 is:\n ( " ;
   for ( L_Iter1 = L1.begin( ) ; L_Iter1 != L1.end( ) ; L_Iter1++ )
      cout << *L_Iter1 << " ";
   cout << ")." << endl;
}

Örnek Çıktı

The original vector v1 is:
 ( 7 1 9 2 0 7 7 3 4 6 8 5 7 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ).
The vector v1 with a value 70 replacing that of 7 is:
 ( 7 1 9 2 0 7 7 3 4 6 8 5 7 7 1 70 1 9 2 0 70 70 3 4 6 8 5 70 70 1 ).
The list copy L1 of v1 with the value 0 replacing that of 7 is:
 ( 1 1 9 2 0 1 1 3 4 6 8 5 1 1 0 ).

Gereksinimler

Başlık: <algorithm>

Namespace: std

Ayrıca bkz.

Başvuru

replace_copy (STL Samples)

Standart Şablon Kütüphanesi