Narzędzia użytkownika

Narzędzia witryny


partition

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
partition [2009/04/28 23:58]
pszostek
partition [2009/04/29 00:09]
pszostek
Linia 1: Linia 1:
 ====== Algorytm partition ====== ====== Algorytm partition ======
-Dla podanego zakresu iteratorów algorytm partition ustawia wszystkie elementy, które spełniają podany predykat, przed elementami, ktore go nie spełniają. Algorytm nie musi zachowywać względnej kolejności elementów w kontenerze. Aby uzyskać funkcjonalność std::​partition przy zachowaniu względnej kolejności elementów, należy sięgnąć do std::​stable_partition.+Dla podanego zakresu iteratorów algorytm partition ustawia wszystkie elementy, które spełniają podany predykat, przed elementami, ktore go nie spełniają. Algorytm nie musi zachowywać względnej kolejności elementów w kontenerze. Aby uzyskać funkcjonalność ​//std::​partition// przy zachowaniu względnej kolejności elementów, należy sięgnąć do //std::​stable_partition//.
  
 ===== Deklaracja ===== ===== Deklaracja =====
 w pliku nagłówkowym algorithm: w pliku nagłówkowym algorithm:
 <code cpp> <code cpp>
-template <​class ​BidirectionalIterator, class Predicate>​ +template <​class ​ForwardIterator, class Predicate>​ 
-  ​BidirectionalIterator ​partition ( BidirectionalIterator ​first, +  ​ForwardIterator ​partition ( ForwardIterator ​first, 
-                                    ​BidirectionalIterator ​last, Predicate pred );+                                    ​ForwardIterator ​last, Predicate pred );
 </​code>​ </​code>​
  
 ===== Parametry ===== ===== Parametry =====
-  * **first, last** - iteratory wskazujące na zakres podziału elementów. Iterator last wskazuje jeden za element za ostatnim, ktory ma ulec przetwarzaniu.+  * **first, last** - iteratory wskazujące na zakres ​elementów, które mają ulec podziałowi. Iterator last wskazuje jeden za element za ostatnim, ktory ma ulec przetwarzaniu.
  
   * **pred** - funkcja lub obiekt funkcyjny (z przeciążonym operatorem()),​ będący predykatem dla podziału elementów. Elementy kontenera, które spełniają predykat, zostaną ustawione na początku kontenera, na który wskazują iteratory first i last. Elementy kontenera niespełniające predykatu zostaną ustawione w kontenerze w drugiej kolejności.   * **pred** - funkcja lub obiekt funkcyjny (z przeciążonym operatorem()),​ będący predykatem dla podziału elementów. Elementy kontenera, które spełniają predykat, zostaną ustawione na początku kontenera, na który wskazują iteratory first i last. Elementy kontenera niespełniające predykatu zostaną ustawione w kontenerze w drugiej kolejności.
Linia 20: Linia 20:
  
 ===== Wymagania na parametryzowane typy ===== ===== Wymagania na parametryzowane typy =====
-  * BidirectionalIterator zachowuje się jak iterator dwukierunkowy+  * //​ForwardIterator//​ posiada funkcjonalność iteratora jednokierunkowego
  
-  * Predicate udostępnia jednoargumentowy operator()+  * //Predicate// udostępnia jednoargumentowy operator()
  
-  * Typ wartości dla BidirectionalIterator jest konwertowalny do typu argumentu operatora() dla klasy Predicate+  * Typ wartości dla klasy //BidirectionalIterator// jest konwertowalny do typu argumentu operatora() dla klasy //Predicate//
  
  
 ===== Złożoność ===== ===== Złożoność =====
 Algorytm partition() dokonuje najwyżej (first-last)/​2 zamian elementów i aplikuje podany predykat dokladnie first-last razy. Algorytm partition() dokonuje najwyżej (first-last)/​2 zamian elementów i aplikuje podany predykat dokladnie first-last razy.
partition.txt · ostatnio zmienione: 2009/04/29 13:00 przez pszostek