przejście do zawartości
zpr c++ quick reference
Narzędzia użytkownika
Zarejestruj się!
Zaloguj
Narzędzia witryny
Narzędzia
Pokaż stronę
Poprzednie wersje
Odnośniki
Ostatnie zmiany
Menadżer multimediów
Indeks
Zaloguj
Zarejestruj się!
Ostatnie zmiany
Menadżer multimediów
Indeks
Ślad:
sort
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
====== Biblioteka stl, opis algorytmu : sort ====== Algorytm sort należący do biblioteki STL umożliwia nam wydajne sortowanie dowolnych zbiorów elementów tego samego typu. Są dwie wersje algorytmu różniące się ilością parametrów. Algorytm sort biblioteki STL znjaduje się w komponencie **algorytm** dlatego jeśli chcemy używać tego algorytmu należy dołączyć plik nagłówkowy <algorytm>. <code cpp> #include <algorithm> </code> ===== sort(first,last) - wersja algorytmu pobierająca dwa argumenty. ===== <code cpp> template <class RandomAccessIterator> void sort ( RandomAccessIterator first, RandomAccessIterator last ); </code> Parametry odpowiednio oznaczają pierwszy i ostatni element pomiędzy którymi mają one zostać posortowane. Element **first** znajduje się z w zbiorze elementów sortowanych, a element **last** już nie – **[first, last)**. Do porównywania elementów używany jest operator "<" , którego działanie możemy dowolnie przeładować dla obiektów sortowanych. === Przykład użycia algorytmu sort z dwoma parametrami na całej tablicy typu int === <code cpp> int a[8] = {5, 29, 1, -40, -17, 65, 100, -100}; sort(a, a+8); // Out: -100 -40 -17 1 5 29 65 100 </code> === Przykład użycia algorytmu sort z dwoma parametrami na tablicy typu int. Sortowanie elementów [2,7) === <code cpp> int b[8] = {5, 29, 1, -40, -17, 65, 100, -100}; sort(b+2, b+7); // Out: 5 29 -40 -17 1 65 100 -100 </code> === Przykład sortowania obiektów typu string === <code cpp> vector <string> v1; v1.push_back("posiedzieć"); v1.push_back("Dobrze"); v1.push_back("Żubrze :)"); v1.push_back("jest"); v1.push_back("przy"); sort(v1.begin(), v1.end()); /* * Out: 0:Dobrze * 1:jest * 2:posiedzieć * 3:przy * 4:Żubrze :) */ </code> ===== sort(first, last, comp) - wersja algorytmu pobierająca dodatkowo trzeci parametr. ===== <code cpp> template <class RandomAccessIterator, class Compare> void sort ( RandomAccessIterator first, RandomAccessIterator last, Compare comp ); </code> Ostatni parametr oznacza obiekt lub funkcję, która zostanie wykorzystana do porównywanie elementów podczas sortowania. Argumentami tej funkcji są dwa elementy ze zbioru tego samego typu. Zwraca ona true jeśli pierwszy element ma się znaleźć przed drugim i false w przeciwnym wypadku. Jeśli w sortowanym zbiorze będą elementy równe to nie ma pewności na to że zostaną one w oryginalnej kolejności. Do porównania elementów może zostać również wykorzystany obiekt. === Przykład użycia algorytmu sort z trzema parametrami. Do porównania elementów zostanie wykorzystana funkcja === <code cpp> vector <Samochod> v2; v2.push_back(Samochod("Lamborghini Gallardo", 512, 723450)); v2.push_back(Samochod("Porsche 911", 190, 346000)); v2.push_back(Samochod("Ferrari 250 S", 210, 1300000)); sort(v2.begin(), v2.end(), porownajMocSamochodow); /* * Out: [Samochód] Nazwa: Porsche 911 , Cena: 346000 , Moc: 190 * [Samochód] Nazwa: Ferrari 250 S , Cena: 1300000 , Moc: 210 * [Samochód] Nazwa: Lamborghini Gallardo , Cena: 723450 , Moc: 512 */ </code> Przykładowa funkcja porównująca dwa obiektu typu samochód pod względem mocy silnika: <code cpp> bool porownajMocSamochodow(Samochod s1, Samochod s2) { if (s1.moc < s2.moc) return true; else return false; } </code> === Przykład użycia algorytmu sort z trzema parametrami. Do porównywania elementów zostanie wykorzystana struktura === <code cpp> vector <Samochod> v2; v2.push_back(Samochod("Lamborghini Gallardo", 512, 723450)); v2.push_back(Samochod("Porsche 911", 190, 346000)); v2.push_back(Samochod("Ferrari 250 S", 210, 1300000)); sort(v2.begin(), v2.end(), mojKlasyfikatorCenowy); /* * Out: [Samochód] Nazwa: Porsche 911 , Cena: 346000 , Moc: 190 * [Samochód] Nazwa: Lamborghini Gallardo , Cena: 723450 , Moc: 512 * [Samochód] Nazwa: Ferrari 250 S , Cena: 1300000 , Moc: 210 */ </code> Przykładowa struktura porównująca dwa obiekty typu samochód pod względem ceny: <code cpp> struct KlasyfikatorCenowy { bool operator() (Samochod s1, Samochod s2) { if (s1.cena < s2.cena) return true; else return false; } } mojKlasyfikatorCenowy; </code> ===== Przykładowy program wykorzystujący różne warianty algorytmu sort ===== {{stl_sort.cpp}}
sort.txt
· ostatnio zmienione: 2008/12/10 22:08 przez
czarek
Narzędzia strony
Pokaż stronę
Poprzednie wersje
Odnośniki
Do góry