logo

Lista i C++ Standard Template Library (STL)

Listor är sekvens behållare som tillåter icke sammanhängande minnesallokering. Jämfört med vektorn går listan långsamt, men när en position har hittats går insättning och radering snabbt (konstant tid). Normalt, när vi säger en lista, talar vi om en dubbelt länkad lista . För att implementera en enkellänkad lista använder vi en forward_list .

std::lista är klassen för List-behållaren. Det är en del av C++ Standard Template Library (STL) och definieras inuti header-fil.



Syntax:

std::list name_of_list;>

Exempel:

C++








// 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;> }>

java switch uttalande

>

>

Produktion

12 45 8 6>

I exemplet ovan skapade vi ett std::list-objekt med namnet gqlist och initierade den med en initializer_list. Vi kan initiera std::list-objekten på många olika sätt här.

Några grundläggande operationer på std::list

  • främre() Returnerar värdet för det första elementet i listan.
  • tillbaka() Returnerar värdet för det sista elementet i listan.
  • push_front() Lägger till ett nytt element 'g' i början av listan.
  • trycka tillbaka() Lägger till ett nytt element 'g' i slutet av listan.
  • pop_front() Tar bort det första elementet i listan och minskar storleken på listan med 1.
  • pop_back() Tar bort det sista elementet i listan och minskar storleken på listan med 1.
  • Föra in() Infogar nya element i listan före elementet på en angiven position.
  • storlek() Returnerar antalet element i listan.
  • Börja() start()-funktionen returnerar en iterator som pekar på det första elementet i listan.
  • slutet() end()-funktionen returnerar en iterator som pekar på det teoretiska sista elementet som följer efter det sista elementet.

Exemplet nedan visar den allmänna användningen av listbehållare och deras grundläggande funktioner i C++.

Exempel:

25 av 100

C++




// 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 det;> >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;> }>

>

>

Produktion

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>

Ovanstående exempel visar bara den allmänna användningen av std::list och dess medlemsfunktioner. Tabellen nedan ger alla medlemsfunktioner i std::list-klassen och länkar till deras detaljerade förklaringar.

std::list Medlemsfunktioner

Funktioner

Definition

främre() Returnerar värdet för det första elementet i listan.
tillbaka() Returnerar värdet för det sista elementet i listan.
push_front(g) Lägger till ett nytt element 'g' i början av listan.
push_back(g) Lägger till ett nytt element 'g' i slutet av listan.
pop_front() Tar bort det första elementet i listan och minskar storleken på listan med 1.
pop_back() Tar bort det sista elementet i listan och minskar storleken på listan med 1.
lista::begynn() start()-funktionen returnerar en iterator som pekar på det första elementet i listan.
lista::end() end()-funktionen returnerar en iterator som pekar på det teoretiska sista elementet som följer efter det sista elementet.
lista rbegin() och rend() rbegin() returnerar en omvänd iterator som pekar på det sista elementet i listan. rend() returnerar en omvänd iterator som pekar på positionen före början av listan.
lista cbegin() och cend() cbegin() returnerar en konstant iterator för direktåtkomst som pekar på början av listan. cend() returnerar en konstant iterator för direktåtkomst som pekar mot slutet av listan.
lista crbegin() och crend() crbegin() returnerar en konstant omvänd iterator som pekar på det sista elementet i listan, dvs omvänd början av behållaren. crend() returnerar en konstant omvänd iterator som pekar på det teoretiska elementet som föregår det första elementet i listan, dvs. den omvända änden av listan.
tömma() Returnerar om listan är tom(1) eller inte(0).
Föra in() Infogar nya element i listan före elementet på en angiven position.
radera() Tar bort ett enskilt element eller ett intervall av element från listan.
tilldela() Tilldelar nya element till listan genom att ersätta nuvarande element och ändra storlek på listan.
avlägsna() Tar bort alla element från listan, som är lika med ett givet element.
list::remove_if() Används för att ta bort alla värden från listan som motsvarar predikatet eller villkoret som anges som parameter för funktionen.
omvänd() Vänder om listan.
storlek() Returnerar antalet element i listan.
lista resize() Används för att ändra storlek på en listbehållare.
sortera() Sorterar listan i ökande ordning.
lista max_size() Returnerar det maximala antalet element som en listbehållare kan innehålla.
lista unik() Tar bort alla dubbletter av på varandra följande element från listan.
list::emplace_front() och list::emplace_back() Funktionen .emplace_front() används för att infoga ett nytt element i listbehållaren och konstruerar objektet på plats i början av listan.
. emplace_back()-funktionen används för att infoga ett nytt element i listbehållaren och konstruerar objektet på plats i slutet av listan.
lista::clear() clear()-funktionen används för att ta bort alla element i listbehållaren, vilket gör den till storlek 0.
lista::operatör= Denna operator används för att tilldela nytt innehåll till behållaren genom att ersätta det befintliga innehållet.
lista::swap() Denna funktion används för att byta innehållet i en lista med en annan lista.
list splice() Används för att överföra element från en lista till en annan.
list merge() Slår samman två sorterade listor till en.
list emplace() Utökar listan genom att infoga ett nytt element på en given position och det konstruerar objektet på plats i början av listan, vilket potentiellt förbättrar prestandan genom att undvika en kopieringsoperation

Punkter att komma ihåg om List Container

  • Det implementeras vanligtvis med hjälp av en dynamisk dubbellänkad lista med traversering i båda riktningarna.
  • Snabbare infogning och borttagning jämfört med arrayer och vektorer.
  • Det ger endast sekventiell åtkomst. Slumpmässig åtkomst till något mittelement är inte möjligt
  • Den är definierad som en mall så att den kan hålla vilken datatyp som helst.
  • Den fungerar som en osorterad lista skulle göra, vilket innebär att listans ordning som standard inte bevaras. Det finns dock tekniker för sortering.