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

Ц ++ има класу у својој СТЛ алгоритми библиотеци која нам омогућава једноставне алгоритме за партицију користећи одређене уграђене функције. Партиција се односи на поступање дељења елемената контејнера у зависности од одређеног стања. 
Операције партиције :
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 


 


Топ Чланци

Категорија