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:37]
pszostek
partition [2009/04/29 00:10]
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.+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 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. 
  
 ===== Zwracana wartość ===== ===== Zwracana wartość =====
-Iterator na kolejny element za ostatnim, który spełniał podany predykat+Iterator na kolejny element za ostatnim, który spełniał podany predykat
 + 
 +===== Wymagania na parametryzowane typy ===== 
 +  * //​ForwardIterator//​ posiada funkcjonalność iteratora jednokierunkowego 
 + 
 +  * //​Predicate//​ udostępnia jednoargumentowy operator() 
 + 
 +  * 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