logo

Lista w standardowej bibliotece szablonów C++ (STL)

Listy są sekwencją pojemniki które umożliwiają nieciągłą alokację pamięci. W porównaniu do wektora lista porusza się powoli, ale po znalezieniu pozycji wstawianie i usuwanie jest szybkie (stały czas). Zwykle, gdy mówimy Lista, mówimy o podwójnie połączona lista . Aby zaimplementować pojedynczo połączoną listę, używamy a lista_do przodu .

std::lista jest klasą kontenera List. Jest częścią standardowej biblioteki szablonów C++ (STL) i jest zdefiniowana wewnątrz plik nagłówkowy.



Składnia:

std::list name_of_list;>

Przykład:

C++




metody łańcuchowe w Javie





// C++ program to demonstrate the use of list containers> #include> #include> using> namespace> std;> int> main()> {> >// defining list> >list<>int>>gqlist{12,45,8,6};> >for> (>auto> i : gqlist) {> >cout << i <<>' '>;> >}> >return> 0;> }>

>

>

cyfry alfabetu
Wyjście

12 45 8 6>

W powyższym przykładzie utworzyliśmy obiekt std::list o nazwie lista gq i zainicjowałem go przy użyciu listy inicjalizacyjnej. Możemy inicjować obiekty std::list na wiele różnych, wspomnianych sposobów Tutaj.

Niektóre podstawowe operacje na std::list

  • przód() Zwraca wartość pierwszego elementu na liście.
  • z powrotem() Zwraca wartość ostatniego elementu na liście.
  • push_front() Dodaje nowy element „g” na początku listy.
  • push_back() Dodaje nowy element „g” na końcu listy.
  • pop_front() Usuwa pierwszy element listy i zmniejsza rozmiar listy o 1.
  • pop_back() Usuwa ostatni element listy i zmniejsza rozmiar listy o 1.
  • wstawić() Wstawia nowe elementy na listę przed elementem w określonej pozycji.
  • rozmiar() Zwraca liczbę elementów na liście.
  • zaczynać() Funkcja Begin() zwraca iterator wskazujący na pierwszy element listy.
  • koniec() Funkcja end() zwraca iterator wskazujący na teoretyczny ostatni element, który następuje po ostatnim elemencie.

Poniższy przykład ilustruje ogólne użycie kontenerów list i ich podstawowych funkcji w C++.

Przykład:

C++




skaner Java

// C++ program to demonstrate the implementation of List> #include> #include> #include> using> namespace> std;> // function for printing the elements in a list> void> showlist(list<>int>>g)> {> >list<>int>>::iterator;> >for> (it = g.begin(); it != g.end(); ++it)> >cout <<>' '> << *it;> >cout <<>' '>;> }> // Driver Code> int> main()> {> >list<>int>>gqlist1, gqlist2;> >for> (>int> i = 0; i <10; ++i) {> >gqlist1.push_back(i * 2);> >gqlist2.push_front(i * 3);> >}> >cout <<>' List 1 (gqlist1) is : '>;> >showlist(gqlist1);> >cout <<>' List 2 (gqlist2) is : '>;> >showlist(gqlist2);> >cout <<>' gqlist1.front() : '> << gqlist1.front();> >cout <<>' gqlist1.back() : '> << gqlist1.back();> >cout <<>' gqlist1.pop_front() : '>;> >gqlist1.pop_front();> >showlist(gqlist1);> >cout <<>' gqlist2.pop_back() : '>;> >gqlist2.pop_back();> >showlist(gqlist2);> >cout <<>' gqlist1.reverse() : '>;> >gqlist1.reverse();> >showlist(gqlist1);> >cout <<>' gqlist2.sort(): '>;> >gqlist2.sort();> >showlist(gqlist2);> >return> 0;> }>

>

>

Wyjście

schemat modelu e-r
List 1 (gqlist1) is : 0 2 4 6 8 10 12 14 16 18 List 2 (gqlist2) is : 27 24 21 18 15 12 9 6 3 0 gqlist1.front() : 0 gqlist1.back() : 18 gqlist1.pop_front() : 2 4 6 8 10 12 14 16 18 gqlist2.pop_back() : 27 24 21 18 15 12 9 6 3 gqlist1.reverse() : 18 16 14 12 10 8 6 4 2 gqlist2.sort(): 3 6 9 12 15 18 21 24 27>

Powyższy przykład demonstruje jedynie ogólne użycie std::list i jego funkcji składowych. Poniższa tabela przedstawia wszystkie funkcje składowe klasy std::list i łącza do ich szczegółowego wyjaśnienia.

std::list Funkcje członkowskie

Funkcje

Definicja

przód() Zwraca wartość pierwszego elementu na liście.
z powrotem() Zwraca wartość ostatniego elementu na liście.
push_front(g) Dodaje nowy element „g” na początku listy.
push_back(g) Dodaje nowy element „g” na końcu listy.
pop_front() Usuwa pierwszy element listy i zmniejsza rozmiar listy o 1.
pop_back() Usuwa ostatni element listy i zmniejsza rozmiar listy o 1.
lista::rozpocznij() Funkcja Begin() zwraca iterator wskazujący na pierwszy element listy.
lista::koniec() Funkcja end() zwraca iterator wskazujący na teoretyczny ostatni element, który następuje po ostatnim elemencie.
lista rbegin() i rend() rbegin() zwraca iterator odwrotny, który wskazuje na ostatni element listy. rend() zwraca iterator odwrotny, który wskazuje pozycję przed początkiem listy.
lista cbegin() i cend() cbegin() zwraca stały iterator o dostępie swobodnym, który wskazuje początek listy. cend() zwraca stały iterator o dostępie swobodnym, który wskazuje koniec listy.
lista crbegin() i crend() crbegin() zwraca stały iterator odwrotny, który wskazuje na ostatni element listy, czyli odwrócony początek kontenera. crend() zwraca stały iterator odwrotny, który wskazuje na element teoretyczny poprzedzający pierwszy element na liście, tj. na odwrotny koniec listy.
pusty() Zwraca informację, czy lista jest pusta (1), czy nie (0).
wstawić() Wstawia nowe elementy na listę przed elementem w określonej pozycji.
usuwać() Usuwa pojedynczy element lub zakres elementów z listy.
przydzielać() Przypisuje nowe elementy do listy poprzez zastąpienie bieżących elementów i zmianę rozmiaru listy.
usunąć() Usuwa z listy wszystkie elementy, które są równe danemu elementowi.
lista::usuń_jeśli() Służy do usuwania z listy wszystkich wartości, które odpowiadają predykatowi lub warunkowi podanemu jako parametr funkcji.
odwracać() Odwraca listę.
rozmiar() Zwraca liczbę elementów na liście.
zmiana rozmiaru listy() Służy do zmiany rozmiaru kontenera listy.
sortować() Sortuje listę w kolejności rosnącej.
lista max_size() Zwraca maksymalną liczbę elementów, jakie może pomieścić kontener listy.
lista unikalna() Usuwa wszystkie zduplikowane kolejne elementy z listy.
lista::emplace_front() i lista::emplace_back() Funkcja .emplace_front() służy do wstawienia nowego elementu do kontenera listy i konstruowania obiektu na miejscu na początku listy.
. Funkcja emplace_back() służy do wstawiania nowego elementu do kontenera listy i konstruowania obiektu na miejscu na końcu listy.
lista::wyczyść() Funkcja clear() służy do usuwania wszystkich elementów kontenera listy, nadając mu w ten sposób rozmiar 0.
lista::operator= Operator ten służy do przypisania nowej zawartości do kontenera poprzez zastąpienie istniejącej zawartości.
lista::zamień() Ta funkcja służy do zamiany zawartości jednej listy na inną.
lista splotów() Służy do przenoszenia elementów z jednej listy na drugą.
scalanie listy() Łączy dwie posortowane listy w jedną.
lista miejsc() Rozszerza listę, wstawiając nowy element w danej pozycji i konstruuje obiekt na początku listy, potencjalnie poprawiając wydajność, unikając operacji kopiowania

Punkty do zapamiętania na temat kontenera list

  • Zwykle jest to realizowane przy użyciu dynamicznej, podwójnie połączonej listy z przechodzeniem w obu kierunkach.
  • Szybsza operacja wstawiania i usuwania w porównaniu z tablicami i wektorami.
  • Zapewnia jedynie dostęp sekwencyjny. Losowy dostęp do dowolnego środkowego elementu nie jest możliwy
  • Jest zdefiniowany jako szablon, więc może przechowywać dowolny typ danych.
  • Działa jak lista nieposortowana, co oznacza, że ​​domyślnie kolejność na liście nie jest zachowywana. Istnieją jednak techniki sortowania.