İngilizce dilinde oku

Aracılığıyla paylaş


remove_if

Kalan öğelerin sırasını rahatsız ediyor ve belirtilen değeri boş yeni bir aralığın sonuna döndürerek belli bir aralıktan yüklemi karşılamak öğeleri ortadan kaldırır.

template<class ForwardIterator, class Predicate>
   ForwardIterator remove_if(
      ForwardIterator _First, 
      ForwardIterator _Last,
      Predicate _Pred
   );

Parametreler

  • _First
    Öğeleri alınıp kaldırılmakta olan aralıktaki ilk öğenin konumunu gösteren bir ileriye doğru Yineleyici.

  • _Last
    Geçmiş öğeleri alınıp kaldırılmakta olan aralıktaki son öğenin konumunu bir işaret ileriye doğru bir yineleyici.

  • _Pred
    Yerine getirilmesi gereken tekli yüklemi öğe değerinin değiştirilmesi olacaktır.

Dönüş Değeri

Yeni Bitiş pozisyonu değiştirilen aralığın son öğesi işlemi sırasının belirtilen değeri boş geçen bir adresleme ileriye doğru bir yineleyici.

Notlar

Başvurulan aralığı geçerli olması gerekir; Tüm işaretçiler dereferenceable ve sıra içinde son konuma birinciden erişilebildiğinden tarafından incrementation.

Kaldırılmamışsa öğ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 karşılaştırmaları.

Liste, işaretçiler i Kaldır daha verimli bir üye işlev sürümü vardır.

Örnek

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

bool greater6 ( int value ) {
   return value >6;
}

int main( ) {
   using namespace std;
   vector <int> v1, v2;
   vector <int>::iterator Iter1, Iter2, new_end;

   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( ) );
   cout << "Vector v1 is ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")." << endl;

   // Remove elements satisfying predicate greater6
   new_end = remove_if (v1.begin( ), v1.end( ), greater6 );

   cout << "Vector v1 with elements satisfying greater6 removed is\n ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")." << endl;

   // To change the sequence size, use erase
   v1.erase (new_end, v1.end( ) );

   cout << "Vector v1 resized elements satisfying greater6 removed is\n ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")." << endl;
}

Örnek Çıktı

Vector v1 is ( 7 1 9 2 0 7 7 3 4 6 8 5 7 7 ).
Vector v1 with elements satisfying greater6 removed is
 ( 1 2 0 3 4 6 5 3 4 6 8 5 7 7 ).
Vector v1 resized elements satisfying greater6 removed is
 ( 1 2 0 3 4 6 5 ).

Gereksinimler

Başlık: <algorithm>

Namespace: std

Ayrıca bkz.

Başvuru

remove_if (STL Samples)

Standart Şablon Kütüphanesi