Programista może napisać własną funkcję sort (). Jednak funkcja sort () z biblioteki algorytmu prawdopodobnie będzie działać lepiej niż to, co zapisuje zwykły programista.
Funkcja sort () może sortować wartości wektora w kolejności rosnącej lub w kolejności malejącej. Aby posortować wektor, biblioteka algorytmu musi zostać uwzględniona. Biblioteka wektorowa musi być również uwzględniona. Początek programu powinien być coś takiego:
#włączaćWektor jest w rzeczywistości klasą, z której można tworzyć obiekty wektorowe. Z powyższą górną częścią programu, wektor, który ma być sortowany, można utworzyć w następujący sposób:
wektorNazwa klasy to wektor. Nazwa instanowanego obiektu to VTR.
W tym samouczku kodowanie sortowania odbywa się w funkcji C ++ Main (). Ten samouczek wyjaśnia, jak posortować wektor C ++ za pomocą powyższego wektora, VTR.
Treść artykułu
Domyślne sortowanie
Domyślne sortowanie w kolejności rosnącej. Składnia tego jest:
szablonSortowanie całego wektora
Poniższy kod sortuje cały wektor:
Sort (vtr.początek (), vtr.koniec());Sortowana lista to:
A, B, C, D, M, N, S, V, X, Z,który jest poprawny. Jeśli sortowanie jest nieprawidłowe, to usta jest uzasadnienie programatora, a nie funkcji sort ().
RandomAccessiterator jest nieodłączny. vtr.początek () zwraca iterator, który wskazuje na pierwszy element, i VTR.end () zwraca inny iterator tego samego typu, który wskazuje tuż po ostatnim elemencie. Więc nie ma potrzeby tworzenia instalacji wektora, losowego,. W ten sposób cała lista jest sortowana.
Sortowanie zasięgu w kolejności rosnącej
Powyższa lista niepohamowana ma dziesięć elementów z indeksami:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9Aby sortować tylko elementy z pozycji 4, czyli wskaźnik, 3 = 4 - 1, do pozycji 9, czyli wskaźnik, 8 = 9 - 1, dodaj 3 do VTR.rozpocząć () mieć pierwszy iterator, a następnie dodaj 8 do VTR.początek () mieć ostatni iterator, dla funkcji sort (). 9th element indeksu 8 nie zostanie uwzględniony w sortowaniu. Oznacza to, że ostatni element wskazany w wybranym zakresie jest wykluczony do sortowania. Poniższy kod to ilustruje:
Sort (vtr.początek () + 3, vtr.początek () + 8);Elementy w pozycjach 4, 5, 6, 7, 8 zostały posortowane. Element w 9th Pozycja nie została uwzględniona w tym rodzaju. Pozycje te odpowiadają indeksom 3, 4, 5, 6, 7. Element przy indeksie 8 nie został uwzględniony w tym rodzaju.
Aby uporządkować zasięg, zidentyfikuj pierwsze i ostatnie elementy w zakresie, niekoniecznie z całej listy. Dodaj indeks pierwszego elementu do iteratora początkowego (). Dodaj indeks ostatniego elementu, wciąż do iteratora początkowego (). Pamiętaj, że ostatni element zasięgu nie zostanie uwzględniony w tym rodzaju, ale pierwszy element dla zakresu zostanie uwzględniony.
Dodanie indeksu do iteratora jest możliwe, ponieważ dodanie liczby jest takie samo, jak zwiększenie iteratora tej samej liczby razy. Zakładanie iteratora, co oznacza, że jest to punkt do następnego elementu.
Sortowanie w kolejności malejącej
Składnia to:
szablonRóżni się to od powyższej składni z obecnością „Porównaj kompozycję”. Comp jest wskaźnikiem funkcji lub obiektem funkcyjnym. Comp faktycznie decyduje, czy sortowanie powinno się rosnąć, czy schodzić. Jego nieobecność jest domyślnym przypadkiem, co oznacza zejście.
Sortowanie całej listy w kolejności malejącej
Poniższy kod sortuje cały powyższy wektor w kolejności malejącej:
Sort (vtr.początek (), vtr.end (), większyWektor posortowany w kolejności malejącej to:
Z, x, v, s, n, m, d, c, b, a,Zwróć uwagę na użycie „większych ()” w miejscu kompletu.
Przeciwieństwo większego () jest mniej (), co jest domyślnym (wznoszącym się) i nie trzeba go wpisać.
Sortowanie zasięgu w kolejności malejącej
Zakres może być sortowany w kolejności malejącej, a także w kolejności rosnącej. Poniższy kod sortuje 4th do 9th element bez włączenia 9th element; i schodzenie.
Sort (vtr.początek () + 3, vtr.początek () + 8, większyWektor z wybranym zasięgiem, posortowany w kolejności malejącej, to:
Z, x, c, v, n, m, b, a, s, d,,Niestandardowa funkcja porównaj
Poniższy program ma niestandardową funkcję porównania dla sortowania wznoszącego się:
#włączaćFunkcja wykonania porównania nazywana jest porównanie. Zwraca bool. Ma dwa parametry, A i B, tego samego typu, co typ elementu wektora. Zwraca prawdę, jeśli a jest mniej niż b i fałszywe w przeciwnym razie. Nazwa tej funkcji jest trzecim argumentem wywołania funkcji sort (). W tym programie porównaj jest taki sam jak Less (). Można użyć niektórych innych nazwisk zamiast porównywania.
Niepustowa lista to:
Z, x, c, v, b, n, m, a, s, d,Sortowana lista to:
A, B, C, D, M, N, S, V, X, Z,Oczywiście funkcja porównywania niestandardowego może być używana dla zasięgu. Poniższy program ilustruje to:
#włączaćNiepustowa lista to:
Z, x, c, v, b, n, m, a, s, d,Sortowana lista to:
Z, X, C, A, B, M, N, V, S, D, D,,Funkcję porównania można zakodować w celu zejścia. Poniższy program ilustruje to:
#włączaćPo prostu zmiana (A B).
Niepustowa lista to:
Z, x, c, v, b, n, m, a, s, d,Sortowana lista to:
Z, x, v, s, n, m, d, c, b, a,Funkcja Porównanie niestandardowej może być używana dla zasięgu, w kolejności malejącej. Poniższy program ilustruje to:
#włączaćNiepustowa lista to:
Z, x, c, v, b, n, m, a, s, d,Wektor z wybranym zasięgiem, posortowany w kolejności malejącej, to:
Z, x, c, v, n, m, b, a, s, d,,Inne typy danych
Inne typy danych można sortować za pomocą ich typów. Na przykład, jeśli typ danych INT ma zostać sortowany, wówczas „int” zostanie użyty do utworzenia wektora oraz w funkcji wbudowanej lub niestandardowej porównywania. Jeśli typ danych znajduje się w bibliotece, wówczas nagłówek biblioteki musi być zawarty w programie, podobnie jak w przypadku poniższego ciągu:
#włączaćNiepustowa lista to:
Ze, xe, ce, ve, be, ne, me, ae, se, de, de, de, de, de, de, de, de, de, de,Sortowana lista to:
Ze, xe, ve, se, ne, me, de, ce, be, ae,Wniosek
C ++ jest wyposażony w bibliotekę algorytmu, która ma funkcję sort (). Ta funkcja przyjmuje dwa lub trzy argumenty w normalnym użyciu. Pierwszy argument to miejsce, w którym lista wektorowa powinna się zacząć. Drugi argument to miejsce, w którym lista wektorowa powinna się skończyć. Trzeci argument określa, czy sortowanie ma być wykonane w kolejności rosnącej, czy w kolejności malejącej.