replace_copy_if
Her öğe bir kaynak aralıktaki inceler ve yeni bir hedef aralığı sonucu kopyalanırken belirtilen yüklemi karşılayıp karşılamadığını yerini alır.
template<class InputIterator, class OutputIterator, class Predicate, class Type>
OutputIterator replace_copy_if(
InputIterator _First,
InputIterator _Last,
OutputIterator _Result,
Predicate _Pred,
const Type& _Val
);
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
Öğeleri kopyalandığı hedef aralıktaki ilk öğenin konumunu gösteren bir yineleyici çıktı._Pred
Yerine getirilmesi gereken tekli yüklemi öğe değerinin değiştirilmesi olacaktır._Val
Eski değeri yüklemi karşılayan öğeler 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_copy_ifiki ilişkili formlar:
Bu işlevler nasıl davranacağını hakkında bilgi için bkz: İşaretli Yineleyiciler.
Örnek
// alg_replace_copy_if.cpp
// compile with: /EHsc
#include <vector>
#include <list>
#include <algorithm>
#include <iostream>
bool greater6 ( int value ) {
return value >6;
}
int main( ) {
using namespace std;
vector <int> v1;
list <int> L1 (13);
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 <= 13 ; 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 with a value of 7 in the 1st half of a vector
// with a value of 70 and copy it into the 2nd half of the vector
replace_copy_if ( v1.begin( ), v1.begin( ) + 14,v1.end( ) -14,
greater6 , 70);
cout << "The vector v1 with values of 70 replacing those greater"
<< "\n than 6 in the 1st half & copied into the 2nd half 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_if ( v1.begin( ), v1.begin( ) + 13,L1.begin( ),
greater6 , -1 );
cout << "A list copy of vector v1 with the value -1\n replacing "
<< "those greater than 6 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 ).
The vector v1 with values of 70 replacing those greater
than 6 in the 1st half & copied into the 2nd half is:
( 7 1 9 2 0 7 7 3 4 6 8 5 7 7 70 1 70 2 0 70 70 3 4 6 70 5 70 70 ).
A list copy of vector v1 with the value -1
replacing those greater than 6 is:
( -1 1 -1 2 0 -1 -1 3 4 6 -1 5 -1 ).
Gereksinimler
Başlık: <algorithm>
Namespace: std