Aracılığıyla paylaş


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

Ayrıca bkz.

Başvuru

replace_copy_if (STL Samples)

Standart Şablon Kütüphanesi