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