Lijsten zijn op volgorde containers die niet-aaneengesloten geheugentoewijzing mogelijk maken. Vergeleken met de vector verloopt de lijst langzaam, maar zodra een positie is gevonden, gaat het invoegen en verwijderen snel (constante tijd). Als we een lijst zeggen, hebben we het normaal gesproken over a dubbel gelinkte lijst . Voor het implementeren van een enkelvoudig gekoppelde lijst gebruiken we a forward_list .
std::lijst is de klasse van de List-container. Het is het onderdeel van de C++ Standard Template Library (STL) en wordt binnenin gedefinieerd header-bestand.
Syntaxis:
std::list name_of_list;>
Voorbeeld:
C++
arrays java
// 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;> }> |
>
>Uitvoer
12 45 8 6>
In het bovenstaande voorbeeld hebben we een std::list-object gemaakt met de naam gqlijst en initialiseerde het met behulp van een initializer_list. We kunnen de std::list-objecten initialiseren op veel verschillende manieren hier.
Enkele basisbewerkingen op std::list
- voorkant() – Retourneert de waarde van het eerste element in de lijst.
- rug() – Retourneert de waarde van het laatste element in de lijst.
- push_front() – Voegt een nieuw element ‘g’ toe aan het begin van de lijst.
- terugduwen() – Voegt een nieuw element ‘g’ toe aan het einde van de lijst.
- pop_front() – Verwijdert het eerste element van de lijst en verkleint de lijst met 1.
- pop_back() – Verwijdert het laatste element van de lijst en verkleint de lijst met 1.
- invoegen() – Voegt nieuwe elementen in de lijst in vóór het element op een opgegeven positie.
- maat() – Retourneert het aantal elementen in de lijst.
- beginnen() – De functie begin() retourneert een iterator die naar het eerste element van de lijst verwijst.
- einde() – De functie end() retourneert een iterator die verwijst naar het theoretische laatste element dat op het laatste element volgt.
Het onderstaande voorbeeld demonstreert het algemene gebruik van lijstcontainers en hun basisfuncties in C++.
Voorbeeld:
opdrachtaanraking in linux
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;> >for> (it = g.begin(); it != g.end(); ++it)> >cout <<>' '> << *it;> >cout <<>'
'>;> }> // Driver Code> int> main()> {> >list<>int>>gqlijst1, gqlijst2;> >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;> }> |
>
>Uitvoer
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>
Het bovenstaande voorbeeld demonstreert alleen het algemene gebruik van std::list en zijn lidfuncties. De onderstaande tabel bevat alle ledenfuncties van de klasse std::list en links naar hun gedetailleerde uitleg.
std::list Ledenfuncties
| Functies | Definitie |
|---|---|
| voorkant() | Retourneert de waarde van het eerste element in de lijst. |
| rug() | Retourneert de waarde van het laatste element in de lijst. |
| push_front(g) | Voegt een nieuw element ‘g’ toe aan het begin van de lijst. |
| push_back(g) | Voegt een nieuw element ‘g’ toe aan het einde van de lijst. |
| pop_front() | Verwijdert het eerste element van de lijst en verkleint de lijst met 1. |
| pop_back() | Verwijdert het laatste element van de lijst en verkleint de lijst met 1. |
| lijst::begin() | De functie begin() retourneert een iterator die naar het eerste element van de lijst verwijst. |
| lijst::einde() | De functie end() retourneert een iterator die verwijst naar het theoretische laatste element dat op het laatste element volgt. |
| lijst rbegin() en rend() | rbegin() retourneert een omgekeerde iterator die naar het laatste element van de lijst verwijst. rend() retourneert een omgekeerde iterator die verwijst naar de positie vóór het begin van de lijst. |
| lijst cbegin() en cend() | cbegin() retourneert een constante willekeurige toegang-iterator die naar het begin van de lijst verwijst. cend() retourneert een constante willekeurige toegang-iterator die naar het einde van de lijst verwijst. |
| lijst crbegin() en crend() | crbegin() retourneert een constante omgekeerde iterator die verwijst naar het laatste element van de lijst, dat wil zeggen het omgekeerde begin van de container. crend() retourneert een constante omgekeerde iterator die verwijst naar het theoretische element dat voorafgaat aan het eerste element in de lijst, d.w.z. het omgekeerde uiteinde van de lijst. |
| leeg() | Geeft terug of de lijst leeg is(1) of niet(0). |
| invoegen() | Voegt nieuwe elementen in de lijst in vóór het element op een opgegeven positie. |
| wissen() | Verwijdert een enkel element of een reeks elementen uit de lijst. |
| toewijzen() | Wijst nieuwe elementen aan de lijst toe door de huidige elementen te vervangen en de grootte van de lijst te wijzigen. |
| verwijderen() | Verwijdert alle elementen uit de lijst die gelijk zijn aan een bepaald element. |
| lijst::remove_if() | Wordt gebruikt om alle waarden uit de lijst te verwijderen die overeenkomen met het predicaat of de voorwaarde die als parameter aan de functie is gegeven. |
| achteruit() | Draait de lijst om. |
| maat() | Retourneert het aantal elementen in de lijst. |
| lijst wijzigen() | Wordt gebruikt om het formaat van een lijstcontainer te wijzigen. |
| soort() | Sorteert de lijst in oplopende volgorde. |
| lijst max_size() | Retourneert het maximale aantal elementen dat een lijstcontainer kan bevatten. |
| lijst uniek() | Verwijdert alle dubbele opeenvolgende elementen uit de lijst. |
| lijst::emplace_front() en lijst::emplace_back() | De functie .emplace_front() wordt gebruikt om een nieuw element in de lijstcontainer in te voegen en bouwt het object op zijn plaats aan het begin van de lijst. . De functie emplace_back() wordt gebruikt om een nieuw element in de lijstcontainer in te voegen en bouwt het object op zijn plaats aan het einde van de lijst. |
| lijst::clear() | De functie clear() wordt gebruikt om alle elementen van de lijstcontainer te verwijderen, waardoor deze de grootte 0 krijgt. |
| lijst::operator= | Deze operator wordt gebruikt om nieuwe inhoud aan de container toe te wijzen door de bestaande inhoud te vervangen. |
| lijst::wissel() | Deze functie wordt gebruikt om de inhoud van de ene lijst met een andere lijst te verwisselen. |
| lijst splitsing() | Wordt gebruikt om elementen van de ene lijst naar de andere over te brengen. |
| lijst samenvoegen() | Voegt twee gesorteerde lijsten samen tot één. |
| lijst emplace() | Breidt de lijst uit door een nieuw element op een bepaalde positie in te voegen en construeert het object op zijn plaats aan het begin van de lijst, waardoor de prestaties mogelijk worden verbeterd door een kopieerbewerking te vermijden |
Aandachtspunten over Lijstcontainer
- Het wordt over het algemeen geïmplementeerd met behulp van een dynamische, dubbel gekoppelde lijst met doorloop in beide richtingen.
- Snellere invoeg- en verwijderbewerking in vergelijking met arrays en vectoren.
- Het biedt alleen sequentiële toegang. Willekeurige toegang tot een middenelement is niet mogelijk
- Het is gedefinieerd als een sjabloon, zodat het elk gegevenstype kan bevatten.
- Het werkt als een ongesorteerde lijst, wat inhoudt dat de volgorde van de lijst standaard niet behouden blijft. Er zijn echter technieken om te sorteren.