Aracılığıyla paylaş


partition

Bir aralıktaki öğeleri iki ayrık kümeler onu karşılamak için başarısız olmuş önceki tekli yüklemi karşılanması bu öğelerle sınıflandırır.

template<class BidirectionalIterator, class Predicate>
   BidirectionalIterator partition(
      BidirectionalIterator _First, 
      BidirectionalIterator _Last, 
      Predicate _Comp
   );

Parametreler

  • _First
    Bölümlenmiş aralığındaki ilk öğenin konumunu adresleme bir çift yönlü Yineleyici.

  • _Last
    Bölümlenmiş geçen aralıktaki son öğenin konumunu adresleme bir çift yönlü Yineleyici.

  • _Comp
    Bir öğe sınıflandırılmalarını ise yerine getirilmesi koşulu tanımlar doðrulama işlevi kullanıcı tanımlı nesne.Bir yüklemi tek bir baðýmsýz deðiþken alýr ve döner doğru veya yanlış.

Dönüş Değeri

Doðrulama koşul değil karşılamak için aralıktaki ilk öğenin konumunu adresleme bir çift yönlü 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.

Öğeleri bir ve b eşdeğerdir ancak şart değil, her iki eşit Pr (bir, b) yanlış ve Pr (b, bir) yanlışsa, burada Pr parametresi tarafından belirtilen yüklemi olur.Bölüm algoritması kararlı değil ve göreli eşdeğer öğelerinin sıralamasını korunacaktır olduğunu garanti etmez.Algoritma stable_ bölüm orijinal sipariş koru.

Doğrusal karmaşıklık: vardır (_Last – _First) uygulamaları _Comp ve en fazla (_Last – _First) / 2 ile değiştirir.

Örnek

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

bool greater5 ( int value ) {
   return value >5;
}

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

   int i;
   for ( i = 0 ; i <= 10 ; i++ )
   {
      v1.push_back( i );
   }
   random_shuffle( v1.begin( ), v1.end( ) );

   cout << "Vector v1 is ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")." << endl;

   // Partition the range with predicate greater10
   partition ( v1.begin( ), v1.end( ), greater5 );
   cout << "The partitioned set of elements in v1 is: ( " ;
   for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
      cout << *Iter1 << " ";
   cout << ")." << endl;
}

Örnek Çıktı

Vector v1 is ( 10 1 9 2 0 5 7 3 4 6 8 ).
The partitioned set of elements in v1 is: ( 10 8 9 6 7 5 0 3 4 2 1 ).

Gereksinimler

Başlık: <algorithm>

Namespace: std

Ayrıca bkz.

Başvuru

partition (STL Samples)

Standart Şablon Kütüphanesi