To tylko jedna z 50 stron tej notatki. Zaloguj się aby zobaczyć ten dokument.
Zobacz
całą notatkę
Algorytmy STL Wykład 13 06/01/17 2 Algorytmy STL Algorytmy zdefiniowane są w pliku nagłówkowym Znajduje się tam teŜ kilka pomocniczych funkcji takich jak min, max, swap Algorytmy STL słuŜące do przetwarzania numerycznego zdefiniowane są w pliku nagłówkowym Podczas pracy z algorytmami często potrzebne są obiekty funkcyjne 06/01/17 3 Cechy ogólne Algorytmy przetwarzają co najmniej jeden zakres wyznaczony przez iteratory Pierwszy zakres wyznaczony jest przez początek i koniec Zakres zawsze jest półotwarty [beg, end) Dla następnych na ogół wystarczy podać początek, bo liczba elementów przetwarzanych zdefiniowana jest przez zakres pierwszy Do funkcji wywołującej naleŜy zapewnienie poprawności zakresów, tzn. Koniec zakresu musi być osiągalny z początku Zakresy muszą zawierać wystarczająca liczbę elementów Algorytmy działają w trybie nadpisywania, a nie wstawiania Chyba, Ŝe uŜyjemy iteratorów wstawiających 06/01/17 4 Elastyczność Niektóre algorytmu pozwalają na przekazanie operacji zdefiniowanych przez programistę, które są przez nie wywoływane Operacje mogą być zwykłymi funkcjami lub funktorami Operacje numeryczne wykonujące np. iloczyn JeŜeli funkcje zwracają wartość logiczną to nazywamy je predykatami (+dodatkowe warunki) Np. do wyszukiwania uŜywamy predykatów jednoargumentowych Do sortowania predykatów dwuargumentowych Predykat jednoargumentowy słuŜący do określania, na których elementach wykonywać operację 06/01/17 5 Klasyfikacja algorytmów Algorytmy sklasyfikowano wg ich przeznaczenia Np. czytające, modyfikujące, zmieniające kolejność Nazwa algorytmu i przyrostki Na ogół nazwa intuicyjnie definiuje zadanie Przyrostek _if – uŜywanie jest gdy istnieją dwie postacie algorytmu, jedna nie wymaga podania funktora druga wymaga find – szuka wartości, find_if – szuka elementu spełniającego podane kryterium Nie jest tak zawsze (jeŜeli funkcja wymaga istnienia funktora) np. min_element Przyrostek _copy – wskazuje Ŝe elementy będą kopiowane do zakresu docelowego np. reverse i reverse_copy 06/01/17 6 Kategorie algorytmów Algorytmy niemodyfikujące ( nonmodifying algorithms) Algorytmy modyfikujące ( modifying algorithms) Algorytmy usuwające ( removing algorithms) Algorytmy mutujące ( mutating algorithms) Algorytmy sortujące ( sorting algorithms) Algorytmy przeznaczone do zakresów posortowanych ( sorted range algorithms) Algorytmy numeryczne ( numeric algorithms) Niektóre algorytmu naleŜą do kilku kategorii
... zobacz całą notatkę
Komentarze użytkowników (0)