lists stl
Leer alles over lijsten in STL en de implementatie ervan.
Lijsten zijn opeenvolgende containers. Lijsten bevatten elementen op niet-aaneengesloten locaties. We hebben arrays en vectoren besproken in onze vorige tutorials.
In het geval van de array- en vectorcontainers, aangezien deze containers gegevens opslaan in een aangrenzend geheugen, blijkt het invoegen in het midden van deze containers erg kostbaar te zijn omdat we de bestaande elementen dienovereenkomstig moeten verschuiven om ruimte te maken voor het nieuwe element.
=> Zie hier om de volledige C ++ Tutorials-lijst te verkennen.
beste pc-cleaner en optimizer gratis
Wat je leert:
Overzicht
De lijst is een container die dit nadeel van de array- en vectorcontainers ondervangt. Het stelt ons in staat om overal in de lijst elementen in te voegen zonder veel overhead te veroorzaken. Maar lijsten zijn langzamer dan vectoren als het gaat om traversal.
In deze tutorial zullen we de implementatie van lijsten in STL zien, samen met de verschillende bewerkingen van doorlopen, manipulaties en toegang tot de lijst met voorbeelden.
Merk op dat de meeste lijstbewerkingen vergelijkbaar zijn met die van vectoren en dat lezers die onze tutorial over vectoren al hebben gelezen, geen problemen zullen hebben bij het interpreteren van lijstconcepten.
Verklaring en initialisatie
Om een lijstcontainer te implementeren en al zijn voordelen te gebruiken, moeten we een header-bestand in ons programma opnemen.
De algemene declaratie voor lijstcontainer is
Bijvoorbeeld,we kunnen een lijst met de naam ‘mijnlijst’ van het type int als volgt declareren:
We kunnen de lijst ook initialiseren op het moment van aangifte of er elementen aan toevoegen met behulp van een van de bewerkingen die het ondersteunt.
Laten we eens kijken hoe we de lijst die we hierboven hebben gemaakt kunnen initialiseren.
De bovenstaande initialisatie wordt in het geheugen vastgelegd zoals hieronder weergegeven:
Zodra we de lijst hebben geïnitialiseerd, hebben we toegang tot de elementen van een lijst met behulp van een iterator. De Iterator-functies ‘begin’ en ‘einde’ helpen ons door de lijstelementen te lopen.
Notitie: Iterator voor de lijst ondersteunt ook andere iteratoren zoals reverse iterators (rbegin, rend), constante iterators (cbegin, cend) en constante reverse iterators (crbegin, crend) en kunnen op een vergelijkbare manier worden gebruikt als vectoren.
Het volgende voorbeeld laat dit zien.
Uitgang:
Lijstelementen zijn: 1 1 2 3 5
Dus in het bovenstaande voorbeeld hebben we een lijst van de Fibonacci-reeks verklaard. Vervolgens declareren we een iterator van hetzelfde type als list en gebruiken we vervolgens for loop om de inhoud van de lijst van begin tot eind af te drukken.
Laten we nu naar de bewerkingen of functies springen die de lijst met container in STL ons biedt.
Lijstbewerkingen
- Invoegen: Wordt gebruikt om een element op de opgegeven positie in te voegen. Retourneert een iterator die verwijst naar het eerste ingevoegde element.
invoegen (pos, num_elem, elem)
Waar,
pos => Positie waar nieuwe elementen moeten worden ingevoegd.
num_elem => Aantal in te voegen elementen; standaard ingesteld op 1.
item => Werkelijke waarde die moet worden ingevoegd.
Laten we de invoegfunctie begrijpen door een voorbeeld te nemen.
Uitgang:
De lijst na het invoegen van 1 element met insert () is: 1 1 2 3
Dit is een voorbeeld om slechts één element op de 4 in te voegenthpositie in de lijst die uiteindelijk de laatste positie is. Daarom hebben we eerst een lijst waarvoor we de iterator hebben gedefinieerd die naar het begin van de lijst verwijst. Vervolgens verschuiven we deze iterator naar de 4thpositie en roep vervolgens insert aan om 1 element in te voegen.
We kunnen ook meer dan één element invoegen door de tweede parameter op te geven in de invoegfunctie. Wanneer het niet is opgegeven, wordt het standaard ingesteld op 1.
- terugduwen Voegt een nieuw element toe aan het einde van de lijst.
- push_front Voegt een nieuw element toe aan het begin van de lijst.
Laten we een voorbeeld bekijken dat het gebruik van de functies push_back en push_front laat zien.
Uitgang:
Lijstelementen zijn: 1 1 2 3
Inhoud weergeven na push_front en push_back: 0 1 1 2 3 5
In dit voorbeeld maken en vermelden we eerst alle twee elementen erin, een voor en een achter met respectievelijk de functies push_front en push_back. De uitvoer toont de gewijzigde lijst nadat beide functies zijn uitgevoerd.
samenvoegen sorteer broncode c ++
- pop_back Verwijdert het laatste element in de lijst, waardoor de lijstgrootte met 1 wordt verkleind.
- pop_front Verwijdert het eerste element uit de lijst, waardoor de lijstgrootte met 1 wordt verkleind.
Het volgende voorbeeld toont het gebruik van de bewerkingen pop_back en pop_front van de lijst.
Uitgang:
Lijstelementen zijn: 1 1 2 3 5
Geef de inhoud weer na push_front en push_back: 1 2 3
Zoals beschreven in de definitie van de bewerkingen, verwijderen elk van de bewerkingen pop_front en pop_back het element van de voor- en achterkant van de lijst, d.w.z. respectievelijk het eerste en het laatste element van de lijst en dus elke keer dat het de grootte van de lijst met 1 verkleint.
- grootte Retourneert de grootte van de lijst, d.w.z. het aantal elementen in de lijst.
- leeg Controleert of de lijst leeg is.
- wissen Verwijdert een element of reeks elementen uit de lijst.
- Doorzichtig Verwijdert alle elementen uit de lijst door de grootte 0 te maken.
Hieronder is een voorbeeld gegeven om het gebruik van alle bovenstaande functies te demonstreren, d.w.z. grootte, leeg, wissen en wissen.
Uitgang:
Lijstelementen zijn: 1 1 2 3 5
grootte van de lijst: 5
Lijst na het wissen van het eerste element: 1 2 3 5
Nieuwe grootte van de lijst: 4
grootte van de lijst na wissen: 0
Het bovenstaande programma demonstreert alle vier functies die verband houden met de capaciteit van de lijst. We zien dat de lijstgrootte met 1 afneemt als we 1 element uit de lijst wissen. Terwijl wanneer we een duidelijke bewerking op de lijst noemen, de grootte 0 is, wat betekent dat alle elementen in de lijst worden verwijderd.
- voorkant Retourneert de waarde van het eerste element van de lijst.
- terug Retourneert de waarde van het laatste element van de lijst.
- ruilen Wisselt de inhoud van een lijst om met de inhoud van een andere lijst van hetzelfde formaat en type.
- omgekeerde Een algoritme dat de lijst omkeert.
- soort Sorteert de gegeven lijst.
Het onderstaande voorbeeld toont het gebruik van de functies voor, achter, achteruit, sorteren en omwisselen.
Uitgang:
Lijstelementen zijn: 1 1 2 3 5
Voorkant van de lijst: 1
Achterkant van de lijst: 5
Omgekeerde lijst: 5 3 2 1 1
Inhoud van de oneven lijst: 1 3 5 7 9
Na het ruilen
mijnlijst: 1 3 5 7 9
Oddlist: 5 3 2 1 1
In deze code drukken we eerst de voor- en achterkant waarden van de lijst mijnlijst af. Vervolgens wordt deze lijst omgekeerd en wordt de omgekeerde lijst afgedrukt. Daarna definiëren we nog een lijst met oneven nummers die niet in een willekeurige volgorde staat, en we noemen het ‘Sort’ algoritme om deze lijst te sorteren. Vervolgens wisselen we de twee lijsten met de swap-functie en printen we de uitgewisselde lijsten.
- splitsing Deze functie wordt gebruikt om de inhoud van de ene lijst naar een andere lijst op een opgegeven positie over te brengen.
Beide lijsten moeten van hetzelfde type zijn.
splitsing (positie, lijst);
waar,
position => Positie waarop de inhoud van de lijst moet worden overgebracht.
list => Lijst waarvan de elementen moeten worden overgedragen.
Het onderstaande voorbeeld toont het gebruik van de splitsingsfunctie.
Uitgang:
Lijstelementen zijn: 1 1 8 13
lijst die moet worden gesplitst: 2 3 5
Geef de inhoud weer na het splitsen op positie 2: 1 1 2 3 5 8 13
De voorbeeld laat zien dat we twee lijsten gebruiken. Eerst wordt de iterator voor mijnlijst naar twee posities verplaatst en vervolgens wordt de splitsingsfunctie aangeroepen om de inhoud van de tweede lijst over te brengen naar de derde positie van de eerste lijst.
- Gaan In tegenstelling tot de splitsingsfunctie die kan worden gebruikt om de inhoud van de ene lijst naar een andere op een specifieke positie over te dragen, voegt de samenvoegbewerking twee lijsten direct samen tot één enkele lijst. Voor samenvoegbewerking moeten beide lijsten in gesorteerde volgorde staan.
Hieronder is een voorbeeld gegeven om de samenvoegfunctie te demonstreren.
Uitgang:
Eerste lijst: 11 2 3 5 8
Tweede lijst: 4 6 7
Inhoud weergeven na het samenvoegen van twee lijsten:
1 1 2 3 4 5 6 7 8
Dus in het bovenstaande programma hebben we twee lijsten die zijn gesorteerd. We noemen samenvoegbewerking op deze twee lijsten. De resulterende lijst is een gesorteerde lijst die de elementen van beide lijsten bevat.
Gevolgtrekking
We zijn aan het einde gekomen van deze tutorial over lijsten in STL. We hopen dat deze tutorial je enorm veel kennis zou hebben gegeven over lijsten in STL.
Kijk hier om A-Z van C ++ trainingshandleidingen hier te zien.