logo

std :: skaidinys C ++ STL

„C ++“ turi klasę STL algoritmų bibliotekoje, kuri leidžia mums lengvai skaidyti algoritmus, naudojant tam tikras integruotas funkcijas. Pertvara reiškia konteinerių elementų dalijimąsi, atsižvelgiant į nurodytą būklę. 
Pertvaros operacijos :
1. Pertvara („Beg End“ sąlyga) :- Ši funkcija naudojama Skirstykite elementus ant būklės pagrindas paminėta savo argumentais.
2. IS_PARTIONED (BEG END sąlyga) :- Ši funkcija grąžina loginę tiesa, jei konteineris yra padalijamas dar grįžta klaidingai.

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

Išvestis: 



Java žiniatinklio paslaugos
Vector is not partitioned Now vector is partitioned after partition operation The partitioned vector is : 2 8 6 5 1 7

Aukščiau pateiktame kodo skaidinio funkcijos skaidiniuose vektorius, priklausomai nuo to, ar elementas yra lygus, ar nelyginis, net elementai yra padalijami iš nelyginių elementų jokia konkrečia tvarka. 
3. STABLE_PARTION (BEG END sąlyga) :- Ši funkcija naudojama Skirstykite elementus ant būklės pagrindas minėta savo argumentais Tokiu būdu išsaugota santykinė elementų tvarka. .
4. Partition_point (elgetos pabaigos sąlyga) :- Ši funkcija Grąžina iteratorių, nukreiptą į skaidinio tašką konteinerio, t. Y. Pirmasis padalijamo diapazono elementas [Begend), kurio sąlyga netiesa. Konteineris jau turėtų būti padalintas, kad ši funkcija veiktų.

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

Išvestis: 

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

Aukščiau pateiktame kode lyginiai ir nelyginiai elementai yra padalijami ir didėjančia tvarka (rūšiuota). Ne visada didėjant tvarkai, nors čia esantys elementai (lyginiai ir nelyginiai) pasirodė padidėjusi tvarka, taigi ir rezultatas po padalijimo. Jei Vectas būtų buvęs {217865} po „Stable_partition“ (), tai būtų {286175}. Išvaizdos tvarka išlaikoma.
5. Partition_copy (beg end beg1 beg2 sąlyga) :- Ši funkcija nukopijuoja padalijamus elementus skirtinguose konteineriuose, minimuose jos argumentuose. Tam reikia 5 argumentų. Naujo konteinerio pradinės konteinerio padėties pradžia ir pabaiga, kur reikia nukopijuoti elementus (elementai, grąžinti teisingi dėl sąlygos) Pradinė naujos talpyklos padėtis, kai reikia nukopijuoti kitus elementus (elementai, grąžinantys klaidingą sąlygą) ir būklė . Keitimas Nauji konteineriai yra būtina Už šią funkciją.



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

Išvestis: 

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