Funkcje listy C ++

Funkcje listy C ++
„Listy to kontenery dla sekwencji, które umożliwiają wstawkę o stałym czasie i usuwać operacje wszędzie w sekwencji, a także iteracja w obu kierunkach. Kontenery listy są zaimplementowane jako podwójnie połączone listy, które umożliwiają przechowywanie wszystkich elementów w kilku niepowiązanych miejscach przechowywania.

Kluczowym rozróżnieniem między nimi a obiektami listy do przodu jest to, że te pierwsze to listy z jednym połączeniem, co oznacza, że ​​można je iterować tylko do przodu w zamian za nieco mniejsze i bardziej skuteczne."

Lista C ++

W rezultacie wektor nie utrzymuje swoich elementów w ciągłej pamięci, jak to robi lista. Ponieważ przeniesienie wszystkich informacji zajmuje dużo czasu, wstawienie i usunięcie w środku wektora są dość drogie. Połączona lista, która korzysta z kontenera listy w jego implementacji, rozwiązuje ten problem. Lista zapisuje elementy na przylegającej pamięci, ale wektor przechowuje na pamięci niekontrolowanej. Ponieważ poruszanie wszystkich elementów i usunięcie zajmuje dużo czasu, jest dość drogie.

Listy zapewniają dwukierunkową komunikację i oferują skuteczny sposób wykonywania operacji wstawiania i usuwania.

Rodzaje listy

Pojedyncza lista

Jest to najprostszy rodzaj powiązanej listy, z każdym węzłem, w tym dane i wskaźnik do węzła po nim, który ma ten sam typ danych. Ponieważ ma wskaźnik do następującego węzła, węzeł przechowuje adres tego węzła w sekwencji. Dane można przemierzać tylko w jedną stronę na jednej listy połączonej.

Lista podwójnych linków

Dane i dodatkowy wskaźnik, znany jako wcześniejszy wskaźnik obecny na liście pojedynczo połączonej, są również obecne na podwójnie połączonej liście. Poprzedni link pierwszego węzła na liście punktów do NULL, podobnie jak węzeł końcowy następnego węzła listy.

Okrągła podwójna lista

Okrągła lista połączona ma wszystkie węzły podłączone do koła. Ostatnia null jest nieobecna. Istnieją dwa rodzaje okrągłych powiązanych list: pojedynczy okrągły i podwójny okólnik.

Korzyści z listy C ++

Ponieważ rozmiar powiązanej listy zmienia się podczas jej używanego, nie ma utraty pamięci.

Nie ma utraty pamięci, ponieważ rozmiar powiązanej listy zmienia.

  • Realizacja: Liniowe struktury danych, takie jak stosy i kolejki, są często wdrażane za pomocą połączonych list.
  • Usługi wstawiania i usuwania: Połączona lista znacznie upraszcza wstawianie i usuwanie. Nie ma potrzeby przenoszenia elementu po jego dodaniu lub usunięciu; Zamiast tego adres w następnym wskaźniku musi zostać zmieniony.

Funkcje listy C ++

Lista :: front ()

Wbudowana lista funkcji C ++ STL :: Front zwraca odniesienie do pierwszego wpisu w kontenerze listy.

Składnia:

# Nazwa listy.przód()

Parametry:

Ta funkcja po prostu zwraca odniesienie do pierwszego wpisu w kontenerze listy; nie akceptuje żadnych parametrów.

Wartość zwracana: Pierwszy element w kontenerze listy jest bezpośrednio odwoływany przez tę funkcję.

Wyjątek: Zastosowanie z pustym kontenerem listy, ta funkcja generuje niezdefiniowane zachowanie.

Lista z powrotem ()

Bezpośrednie odniesienie do końcowego elementu w kontenerze listy jest zwracane metodą List :: back () w C ++ STL. Ponieważ lista :: end () dostarcza tylko iterator do ostatniego wpisu, ta funkcja różni się od tego.

Składnia:

# Nazwa listy.z powrotem()

Parametry:

Nie ma parametru; Zwróć wartość. Ostateczny element na liście demonstracji kontenerów listy jest bezpośrednio odwoływany przez tę funkcję.

Wyjątek: Nie ma takiego wyjątku w tej metodzie, ale wywołując go z pustym kontenerem listy powoduje zachowanie C ++ w sposób nieokreślony.

Lista :: push_front ()

Wbudowana metoda C ++ STL Push Front () jest używana do wstawienia elementu tuż przed górnym elementem w pojemniku listy. Dodatkowo rozmiar kontenera jest zwiększany przez tę funkcję o 1.

Składnia:

# Nazwa listy.push_front (wartość danych)

Parametry:

Ta opcja określa element, który należy dodać na górze listy.

Wartość zwracana:

Ta funkcja nie zwraca nic.

Lista: push_back ()

Aby wstawić nowy element do istniejącego kontenera listy, użyj listy: push back () w C ++ STL. Dodaje element do dodania do kontenera listy, biorąc go za argument.

Składnia:

# Nazwa listy.push_back (wartość)

Parametry:

Istnieje tylko jeden niezbędny parametr dla tej funkcji. Odnosi się to do elementu nazwy listy, który musi zostać wstawiony.

Typ powrotu: Typ powrotu tej funkcji jest nieważny i nie ma wartości zwrotnej.

Lista :: pop_front ()

PRZEDMI ELEMENTU PRZEDSTAWU LISTY można usunąć za pomocą wbudowanej listy funkcji C ++ STL :: Pop Front (). W rezultacie ta funkcja zmniejsza rozmiar pojemnika o 1 podczas usuwania wpisu z góry listy.

Składnia:

# Nazwa listy.pop_front ();

Wartość zwracana:

Ta funkcja nie zwraca nic.

Lista :: pop_back ()

Użyj wbudowanej listy metod C ++ STL :: pop z powrotem, aby usunąć element z tylnej części kontenera listy. Innymi słowy, ostatni element w pojemniku listy jest usuwany przez tę funkcję. Usunięcie członka z końca listy Ta funkcja zmniejsza rozmiar pojemnika o 1.

Składnia:

# Nazwa listy.pop_back ();

Wartość zwracana:

Ta funkcja nie zwraca nic.

Lista :: początek ()

To odróżnia go od funkcji front ().

Składnia:

# Nazwa listy.zaczynać()

Parametry:

Nie są przekazywane parametry.

Lista :: Rend ()

Metoda wbudowana :: Rend () w C ++ STL zwraca odwrotny iterator, który wskazuje na lokalizację przed rozpoczęciem listy.

Składnia:

# Nazwa listy.rozdzierać()

Wartość zwracana:

Odwrotny iterator wskazuje na lokalizację przed zwrotem listy.

Lista :: Cbegin ()

Wbudowana metoda C ++ STL Cbegin () zwraca stały iterator dostępu do losowego, który wskazuje na początek listy.

Składnia:

# Nazwa listy.cbegin ()

Lista :: Cend ()

Stały iterator dostępu do losowego, który wskazuje na koniec listy, jest zwracany przez wbudowaną metodę C ++ Cend ().

Składnia:

# Nazwa listy.Cend ()

Lista :: crbegin ()

Wbudowana metoda C ++ STL crbegin () zwraca stały odwrotny iterator, który prowadzi do końcowego elementu listy lub odwróconego początku kontenera. Ze względu na stały charakter iteratora elementy nie można zmienić ani zmienić.

Składnia:

# Nazwa listy.crbegin ()

Lista :: Crend ()

Wbudowana metoda C ++ STL zwraca stały iterator odwrotny połączony z elementem #Hypothetical, który pojawia się przed pierwszym elementem na liście lub odwrotnym końcem listy. Iterator jest stały; Dlatego elementów nie można zmienić ani zaktualizować.

Składnia:

# Nazwa listy.Crend ()

Lista :: pusta ()

Aby sprawdzić, czy określony kontener listy jest pusty, czy nie, użyj wbudowanej listy funkcji C ++ STL :: pusta (). Ta funkcja nie zmienia listy; po prostu określa, czy lista jest pusta, czy nie, czy jej rozmiar wynosi 0, czy nie.

Składnia:

# Nazwa listy.pusty()

Lista :: Insert ()

Aby wstawić wpisy do listy w dowolnym momencie, użyj funkcji listy :: insert (). Ustaw liczbę elementów do wstawienia, a wartość do wstawienia to trzy parametry dla tej funkcji. Gdy nie jest określony, liczba elementów jest domyślnie ustawiona na jeden.

Składnia:

# wstaw (POS_ITER, ELE_NUM, ELE)

Lista :: Erase ()

Wbudowana funkcja C ++ STL Erase () służy do usuwania elementów z kontenera listy. Dostarczony pojemnik na listę można użyć do usunięcia pojedynczego elementu lub grupy elementów za pomocą tej funkcji.

Składnia:

# Iterator List_name.usunąć (pozycja iteratora)

Parametry:

Mamy dwa parametry.

Pozycja: Gdy pojedynczy element ma zostać usunięty za pomocą funkcji, ten parametr jest wykorzystywany. Ten parametr odnosi się do iteratora, który identyfikuje element z kontenera listy, który należy usunąć.

Po pierwsze, ostatnie: terminy „Parametr pierwszy” i „parametr ostatni” odnoszą się do iteratora wskazującego odpowiednio pierwsze i ostatnie elementy w zakresie, które należy usunąć. To eliminuje wszystkie elementy zakresu, w tym element, na który iterator wskazał najpierw, ale wykluczając element, który iterator wskazał na ostatni.

Lista :: Assign ()

Aby przypisać wartości do listy, użyj wbudowanej metody C ++ STL Assign ().

Składnia:

# Nazwa listy.przypisuj (liczba, wartość)

Parametry:

Liczba: liczba wartości wymaganych do dodania do nazwy listy.

Wartość: Począwszy od początkowego elementu, wartość ta zostanie przypisana określona liczba razy. Jeśli lista ma już pewne elementy, element dostarczony w wartości parametru zajmie się. Typ danych tego parametru musi być taki sam jak typ danych nazwy listy.

Lista :: usuń ()

Eliminuje elementy, które oceniają wartość. WYKORZYSTAŁA jako wejście i usuwa dowolne elementy z kontenera listy, których wartości pasują do wartości przekazanej jako parametr funkcji.

Składnia:

# Nazwa listy.Usuń (val)

Lista :: usuń ()

Metoda remove () służy do wyeliminowania wszelkich wpisów z listy, która pasuje do wartości określonej jako parametr funkcji.

Składnia:

# Nazwa listy.Usuń (wartość)

Lista :: remove_if ()

Funkcja usuń if () służy do wyeliminowania wszystkich wpisów z listy, która spełnia warunek lub predykat, który jest wysyłany jako argument.

Składnia:

# Nazwa listy.remove_if (predykat)

Lista :: reverse ()

Pojemnik na listę można odwrócić za pomocą wbudowanej metody odwrotnej () w C ++ STL. Zmienia kolejność listy elementów kontenerów.

Składnia:

# Nazwa listy.odwracać()

Lista :: rozmiar ()

Innymi słowy, jest stosowany do określenia rozmiaru kontenera listy.

Składnia:

# Nazwa listy.rozmiar();

Lista :: resize ()

Dostosowuje rozmiar kontenera listy, aby pasowało dokładnie elementy „N”, gdy podano liczbę „N” jako parametr.

Składnia:

# Nazwa listy.Zmiana zmiany zmiany rozmiaru (int n, value_type val)

Lista :: sort ()

Elementy kontenera można sortować, zmieniając je za pomocą funkcji sort ().

Składnia:

# Nazwa listy.sortować()

Lista :: max_size ()

Max size () zwraca najwięcej elementów, które może pomieścić kontener listy.

Składnia:

# Nazwa listy.największy rozmiar()

Lista :: unikalne ()

Eliminuje wszystkich kolejnych członków z listy, które są duplikatami. Funkcjonuje tylko z posortowanymi listami.

Składnia:

# Nazwa listy.unikalne (nazwa binarypredicate)

Lista :: swap ()

Korzystając z tej funkcji, zawartość dwóch list tego samego rozmiaru i typu można zamienić.

Składnia:

# ListName1.swap (nazwa listy2)

Lista :: Clear ()

Rozmiar kontenera listy jest zmniejszony do 0, gdy wszystkie elementy są usuwane za pomocą funkcji clear ().

Składnia:

# Nazwa listy.jasne()

Lista :: Operator =

Korzystając z tego operatora, istniejąca zawartość kontenera jest zastąpiona i otrzymuje nowe zadania. Dodatkowo dostosowuje rozmiar, aby pasował do nowej zawartości.

Składnia:

# ListName1 = (ListName2)

W tym artykule wyjaśnimy różne ilustracje funkcji listy.

Przykład nr 1

Tutaj zobaczymy, jak działają funkcje listy.

#włączać
#włączać
#włączać
int main ()
std :: Listmy_list = 50, 10, 30;
dla (int y: my_list)
STD :: Cout<< y << '\n';

W tym kodzie dołączamy pliki nagłówka, i . Następnie wywołujemy funkcję Main (). Rozpocznijmy kodowanie w funkcji Main (). W funkcji Main () dodaj moją listę i przekazuj różne wartości. Wykorzystaj pętlę „dla” i zainicjuj zmienną „Y” i dodaj wartość zmiennej „my_list”.

Przykład nr 2

W tym przypadku widzimy, jak zmniejszyć wartość iteratora za pomocą funkcji listy.

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main (void)
Listl;
Lista l0 = 0, 0, 0;
Lista L9 (L0.początek (), L0.koniec());
Lista L15 (Move (L0));
Cout<< "Size of list 0: " << l0.size() <Cout<< "List 9 contents: " <dla (auto it = l9.zaczynać(); To != L9.koniec(); ++ it)
Cout<< *it <Cout<< "List 15 contents: " <dla (auto it = l15.zaczynać(); To != L15.koniec(); ++ it)
Cout<< *it <powrót 0;

Tutaj dodajemy pliki nagłówka, . Plik nagłówka dotyczy użycia funkcji listy C ++. Wtedy będziemy używać przestrzeni nazw. Wraz z tym nazwali funkcję main (). Najpierw zainicjowaliśmy listę; Następnie przekazaliśmy wartości. Dodajemy funkcję początku (), aby uzyskać z niej 9 elementów. Następnie dodajemy Move (), 15 elementów z tej funkcji ruchu (). Używamy „cout” do wydrukowania instrukcji „Rozmiar listy 0”. A następny „Cout” drukuje instrukcję „List 15 treści”. Ostatecznie używamy pętli „for”, a następnie wartość iteratora maleje po wprowadzeniu całego polecenia „return0”.

Zdobywamy tego rodzaju wynik po uruchomieniu wyżej wspomnianego kodu.

Wniosek

Najpierw rozmawialiśmy o funkcjach listy C ++. Następnie obserwujemy kilka funkcji C ++, które mają zastosowanie do listy. Zdefiniowaliśmy różne funkcje listy C ++, a także ich składni. W tym artykule uruchomiliśmy różne kody zawierające funkcje listy C ++. Na pierwszej ilustracji używamy listy powiązanej i przekazujemy parametry. W drugim przykładzie stosujemy listę funkcji i przekazujemy parametry w każdej funkcji.