Ц ++ има класу у својој СТЛ алгоритми библиотеци која нам омогућава једноставне алгоритме за партицију користећи одређене уграђене функције. Партиција се односи на поступање дељења елемената контејнера у зависности од одређеног стања.
Операције партиције :
1. партиција (почетна ставка) : - Ова функција се користи партиција елемената у Основе стања поменуто у својим аргументима.
2 ИС_Партирани (Почетни крај) : - Ова функција се враћа боолеан Тачно ако је контејнер подељен иначе враћа лажно.
// 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. партиција_поинт (Почетни услов за почетак) : - Ова функција Враћа итератора који указује на тачку партиције контејнера тј. Први елемент у партиционираном распону [бекство) за које стање није тачно. Контејнер је већ требало да буде подељен да би ова функција радила.
// 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