logo

std :: partiție în c ++ stl

C ++ are o clasă în biblioteca sa de algoritmi STL, care ne permite algoritmi de partiție ușori folosind anumite funcții debuilt. Partiția se referă la actul de divizare a elementelor containerelor în funcție de o condiție dată. 
Operațiuni de partiție :
1. Partiție (starea de capăt cerșetă) :- Această funcție este folosită Partiție elementele pe baza condiției menționat în argumentele sale.
2. IS_PARTITIONED (starea de capăt cerg) :- Această funcție returnează boolean adevărat dacă containerul este partiționat altfel returnează fals.

CPP
// C++ code to demonstrate the working of  // partition() and is_partitioned() #include   #include   // for partition algorithm #include // for vector using namespace std; int main() {  // Initializing vector  vector<int> vect = { 2 1 5 6 8 7 };    // Checking if vector is partitioned   // using is_partitioned()  is_partitioned(vect.begin() vect.end() [](int x)  {  return x%2==0;    })?    cout << 'Vector is partitioned':  cout << 'Vector is not partitioned';  cout << endl;    // partitioning vector using partition()  partition(vect.begin() vect.end() [](int x)  {  return x%2==0;    });    // Checking if vector is partitioned   // using is_partitioned()  is_partitioned(vect.begin() vect.end() [](int x)  {  return x%2==0;    })?    cout << 'Now vector is partitioned after partition operation':  cout << 'Vector is still not partitioned after partition operation';  cout << endl;    // Displaying partitioned Vector  cout << 'The partitioned vector is : ';  for (int &x : vect) cout << x << ' ';    return 0;   } 

Ieșire: 



șir java în matrice
Vector is not partitioned Now vector is partitioned after partition operation The partitioned vector is : 2 8 6 5 1 7

În funcția de partiție de cod de mai sus partiții vectorul, în funcție de faptul că un element este egal sau ciudat, chiar elementele sunt partiționate de elemente ciudate, fără nicio ordine. 
3. Stable_Partiție (starea de capăt cerg) :- Această funcție este folosită Partiție elementele pe baza condiției menționat în argumentele sale din Un astfel de mod în care se păstrează ordinea relativă a elementelor. .
4. partiție_point (starea de capăt cerg) :- Această funcție Returnează un iterator indicat către punctul de partiție a containerului, adică primul element din intervalul partiționat [încearcă) pentru care condiția nu este adevărată. Containerul ar trebui să fie deja partiționat pentru ca această funcție să funcționeze.

CPP
// C++ code to demonstrate the working of  // stable_partition() and partition_point() #include   #include   // for partition algorithm #include // for vector using namespace std; int main() {  // Initializing vector  vector<int> vect = { 2 1 5 6 8 7 };    // partitioning vector using stable_partition()  // in sorted order  stable_partition(vect.begin() vect.end() [](int x)  {  return x%2 == 0;   });    // Displaying partitioned Vector  cout << 'The partitioned vector is : ';  for (int &x : vect) cout << x << ' ';  cout << endl;    // Declaring iterator  vector<int>::iterator it1;    // using partition_point() to get ending position of partition  auto it = partition_point(vect.begin() vect.end() [](int x)  {  return x%2==0;  });    // Displaying partitioned Vector  cout << 'The vector elements returning true for condition are : ';  for ( it1= vect.begin(); it1!=it; it1++)  cout << *it1 << ' ';  cout << endl;    return 0;   } 

Ieșire: 

The partitioned vector is : 2 6 8 1 5 7 The vector elements returning true for condition are : 2 6 8

În codul de mai sus, elementele de mai sus sunt partiționate și în ordinea în creștere (sortată). Nu întotdeauna în creștere în creștere, deși aici elementele (chiar și ciudate) au apărut în ordine sporită, așa că este rezultatul după partiție. Dacă vectul ar fi fost {217865} după stable_partition () ar fi {286175}. Ordinea aspectului este menținută.
5. PARTITITION_COPY (starea Beg End BEG1 Beg2) :- Această funcție Copii elementele partiționate în diferitele containere menționate în argumentele sale. Este nevoie de 5 argumente. Poziția de început și de încheiere a containerului poziția de început a unui nou container în care elementele trebuie copiate (elemente care se întorc adevărat pentru condiție) Poziția de început a unui nou container în care alte elemente trebuie copiate (elemente care se întorc fals pentru condiție) și condiția . Redimensionare Containere noi este necesar pentru această funcție.



CPP
// C++ code to demonstrate the working of  // partition_copy() #include   #include   // for partition algorithm #include // for vector using namespace std; int main() {  // Initializing vector  vector<int> vect = { 2 1 5 6 8 7 };    // Declaring vector1  vector<int> vect1;    // Declaring vector1  vector<int> vect2;    // Resizing vectors to suitable size using count_if() and resize()  int n = count_if (vect.begin() vect.end() [](int x)  {  return x%2==0;    } );  vect1.resize(n);   vect2.resize(vect.size()-n);    // Using partition_copy() to copy partitions  partition_copy(vect.begin() vect.end() vect1.begin()   vect2.begin() [](int x)  {  return x%2==0;  });      // Displaying partitioned Vector  cout << 'The elements that return true for condition are : ';  for (int &x : vect1)   cout << x << ' ';  cout << endl;    // Displaying partitioned Vector  cout << 'The elements that return false for condition are : ';  for (int &x : vect2)   cout << x << ' ';  cout << endl;    return 0;  } 

Ieșire: 

The elements that return true for condition are : 2 6 8 The elements that return false for condition are : 1 5 7