logo

СТД :: партиција у Ц ++ СТЛ

Ц ++ има класу у својој СТЛ алгоритми библиотеци која нам омогућава једноставне алгоритме за партицију користећи одређене уграђене функције. Партиција се односи на поступање дељења елемената контејнера у зависности од одређеног стања. 
Операције партиције :
1. партиција (почетна ставка) : - Ова функција се користи партиција елемената у Основе стања поменуто у својим аргументима.
2 ИС_Партирани (Почетни крај) : - Ова функција се враћа боолеан Тачно ако је контејнер подељен иначе враћа лажно.

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

Излаз: 



јавасцрипт коментар
Vector is not partitioned Now vector is partitioned after partition operation The partitioned vector is : 2 8 6 5 1 7

У горњој функцијској партиционској партиционској партицији вектор у зависности да ли је елемент чак и непарни чак и елементи су подељени од непарних елемената у једном одређеном редоследу. 
3. Стабле_Партион (Почетни услов за почетак) : - Ова функција се користи партиција елемената у Основе стања поменути у својим аргументима у Такав начин да се релативни поредак елемената сачува. .
4. партиција_поинт (Почетни услов за почетак) : - Ова функција Враћа итератора који указује на тачку партиције контејнера тј. Први елемент у партиционираном распону [бекство) за које стање није тачно. Контејнер је већ требало да буде подељен да би ова функција радила.

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

Излаз: 

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

У горњем коду чак и и непарни елементи су подељени и у све већој поруџбини (сортирани). Не увек у све већој поруџбини, овде су се елементи (чак и непарни) појавили у повећаном редоследу, тако да је резултат након партиције. Ако би вект био {217865} након стабилног_постољетине () било би {286175}. Редослед изгледа се одржава.
5. партитион_цопи (почетни крај бег1 бег2 услов) : - Ова функција Копира партициониране елементе у различитим контејнерима наведеним у његовим аргументима. Потребно је 5 аргумената. Почетак и крајњи положај контејнерског почетног положаја новог контејнера у којем се морају копирати елементи (елементи који се враћају ТРУЕ за стање) Почетак положаја новог контејнера у којем се морају копирати остали елементи (елементи који се враћају лажно за стање) и стање . Променљив Нови контејнери је неопходно За ову функцију.



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

Излаз: 

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