Narzędzia użytkownika

Narzędzia witryny


min_element_max_element

To jest stara wersja strony!


Algorytm min_element max_element

min_element i max_element to algorytmy zwracające najmniejszy/największy element z zakresu [firstElement, lastElement). firstElement i lastElement są iteratorami wskazującymi na pozycję w kontenerze (np. listy, wektora). Porównywanie jest realizowane jest za pomocą domyślnego (wbudowanego) operatora mniejszości < . Dodatkowo możliwe jest podanie jako trzeciego parametru funkcji w roli operatora <, która będzie użyta do znalezienia najmniejszego/największego elementu. Funkcja ta zwraca true jeżeli jej pierwszy parametr jest mniejszy od drugiego parametru.

Deklaracja

W pliku nagłówkowym algorithm

min_element Pierwsza wersja przyjmuje jako parametr zakres:

template <class ForwardIterator>
  ForwardIterator min_element ( ForwardIterator first, ForwardIterator last );
Druga wersja przyjmuje jako parametr zakres i operator porównujący:
template <class ForwardIterator, class Compare>
  ForwardIterator min_element ( ForwardIterator first, ForwardIterator last,
                                Compare comp );

max_element Pierwsza wersja przyjmuje jako parametr zakres:

template <class ForwardIterator>
  ForwardIterator max_element ( ForwardIterator first, ForwardIterator last );
Druga wersja przyjmuje jako parametr zakres i operator porównujący:
template <class ForwardIterator, class Compare>
  ForwardIterator max_element ( ForwardIterator first, ForwardIterator last,
                                Compare comp );

Parametry

  • first, last - Iteratory wskazujące z jakiego zakresu wyszukiwany będzie najmniejszy/największy element. Zakres to [first, last), co oznacza że zawiera on wszystkie elementy rozpoczynając od elementu first do elementu poprzedzającego last.
  • comp - funkcja realizująca operator mniejszości <. Jako argumenty przyjmuje element pierwszy i element drugi. Zwraca true jeżeli element pierwszy jest mniejszy niż element drugi.

Zwracana wartość

Iterator na kolejny element za ostatnim ze zmodyfikowanych przez algorytm (należy on do tej samej sekwencji co iterator result)

Ograniczenia

  • Funkcja op powinna być pozbawiona efektów ubocznych.
  • Poprawność wykonania nie może zależeć od kolejności wywoływania operacji dla poszczególnych elementów. W szczególności result nie może należeć do zakresu [first1 + 1, last1) lub analogicznego [first2 + 1, first2+ last1-first1). Nic jednak nie stoi na przeszkodzie, aby result był równy first1 lub first2 (wtedy algorytm wykonuje transformację w miejscu)

W przypadku potrzeby użycia algorytmu pozbawionego tych ograniczeń należy stosować algorytm for_each

Złożoność

Liniowa: wywołuje funkcję op i dokonuje przyporządkowania zwracanej przez nią wartości co najwyżej tylokrotnie, ile jest elementów w zakresie [first1, last1)

min_element_max_element.1228949978.txt.gz · ostatnio zmienione: 2008/12/10 23:59 przez kkukolow