logo

STD :: Oddiel v C ++ STL

C ++ má triedu vo svojej knižnici algoritmov STL, ktorá nám umožňuje ľahké algoritmy oddielu pomocou určitých zabudovaných funkcií. Oddelenie sa vzťahuje na čin deliacich prvkov kontajnerov v závislosti od danej podmienky. 
Oddelenie :
1. Oddiel (koncová podmienka Beg) :- Táto funkcia sa používa rozdeliť prvky na základ uvedené vo svojich argumentoch.
2. IS_Partitioned (koncová podmienka Beg) :- táto funkcia vracia boolean Pravda, ak je kontajner rozdelený inak sa vracia nepravdivé.

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;   } 

Výstup: 



ako vymyslel školu
Vector is not partitioned Now vector is partitioned after partition operation The partitioned vector is : 2 8 6 5 1 7

Vo vyššie uvedenom oddiele oddielu oddielu kódu vektor v závislosti od toho, či je prvok párne alebo nepárny, dokonca aj prvky sú rozdelené z nepárnych prvkov v žiadnom konkrétnom poradí. 
3. STATBE_PARTITION (Koncová podmienka Beg) :- Táto funkcia sa používa rozdeliť prvky na základ uvedené vo svojich argumentoch v Taký spôsob, ako sa zachováva relatívne poradie prvkov. .
4. Oddiel_point (koncová podmienka Beg) :- táto funkcia Vráti iterátor smerujúci k bodu oddielu kontajnera, t. Kontajner by už mal byť rozdelený na to, aby táto funkcia fungovala.

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;   } 

Výstup: 

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

Vo vyššie uvedenom kóde sú párne a nepárne prvky rozdelené a v rastúcom poradí (zoradené). Nie vždy v rastúcom poradí, aj keď sa tu prvky (párne a nepárne) objavili v zvýšenom poradí, aj výsledok po oddiele. Ak by Vect bol {217865} po stabilnom_partition (), bol by to {286175}. Udržiava sa poradie vzhľadu.
5. oddiel_copy (State End Beg1 Beg2 Stav) :- táto funkcia skopíruje rozdelené prvky v rôznych kontajneroch uvedených vo svojich argumentoch. Trvá to 5 argumentov. Začiatočná a koncová poloha počiatočnej polohy kontajnera nového kontajnera, kde je potrebné skopírovať prvky (prvky vracajúce sa pre podmienku) Štátna poloha nového kontajnera, kde sa musia skopírovať iné prvky (prvky vracajúce sa nepravdivé pre podmienky) a podmienka . Veľkosť nové kontajnery je nevyhnutný pre túto funkciu.



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;  } 

Výstup: 

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