Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

std::lijst in C++ met Voorbeeld

Wat is een std::list?

In C++ verwijst de std::list naar een opslagcontainer. Met de std:list kunt u overal items invoegen en verwijderen. De std::list wordt geïmplementeerd als een dubbel gekoppelde lijst. Dit betekent dat lijstgegevens bidirectioneel en sequentieel toegankelijk zijn.

De lijst met standaardsjablonenbibliotheek ondersteunt geen snelle willekeurige toegang, maar ondersteunt opeenvolgende toegang vanuit alle richtingen.

U kunt lijstelementen in verschillende geheugenblokken strooien. De informatie die nodig is voor sequentiële toegang tot gegevens wordt opgeslagen in een container. De std::lijst kan tijdens runtime aan beide uiteinden worden uitgebreid en krimpen. Een interne verdeler vervult automatisch de opslagvereisten.

In deze C++ tutorial leer je:

  • Wat is een std::list?
  • Waarom std::list gebruiken?
  • Syntaxis weergeven
  • C++-lijstfuncties
  • Constructeurs
  • Containereigenschappen
  • Invoegen in een lijst
  • Verwijderen uit een lijst

Waarom std::list gebruiken?

Hier zijn redenen om std::List te gebruiken:

  • De std::list is beter te vergelijken met andere sequentiecontainers zoals array en vector.
  • Ze presteren beter bij het invoegen, verplaatsen en verwijderen van elementen vanuit elke positie.
  • De std::list doet het ook beter met algoritmen die dergelijke bewerkingen intensief uitvoeren.

Syntaxis weergeven

Om de std::list te definiëren, moeten we het headerbestand importeren. Hier is de syntaxis van de std::list-definitie:

template < class Type, class Alloc =allocator<T> > class list;

Hier is een beschrijving van de bovenstaande parameters:

  • T – Definieert het type element dat erin zit.

    U kunt T vervangen door elk gegevenstype, zelfs door de gebruiker gedefinieerde typen.

  • Alloc – Definieert het type van het toewijzingsobject.

    Dit maakt standaard gebruik van de toewijzingsklasse-sjabloon. Het is waardeafhankelijk en gebruikt een eenvoudig geheugentoewijzingsmodel.

Voorbeelden 1:

#include <algorithm>
#include <iostream>
#include <list>
int main() {
	std::list<int> my_list = { 12, 5, 10, 9 };

	for (int x : my_list) {
		std::cout << x << '\n';
	}
}

Uitvoer:

Hier is een screenshot van de code:

Code uitleg:

  1. Voeg het headerbestand van het algoritme toe om de functies ervan te gebruiken.
  2. Voeg het iostream-headerbestand toe om de functies ervan te gebruiken.
  3. Voeg het lijstkopbestand toe om de functies ervan te gebruiken.
  4. Roep de functie main() aan. De programmalogica moet worden toegevoegd aan de hoofdtekst van deze functie.
  5. Maak een lijst met de naam my_list met een set van 4 gehele getallen.
  6. Gebruik een for-lus om een ​​lusvariabele x te maken. Deze variabele wordt gebruikt om de lijstelementen te herhalen.
  7. Druk de waarden van de lijst af op de console.
  8. Einde van de hoofdtekst van de for a-lus.
  9. Einde van de hoofdtekst van de functie main().

C++-lijstfuncties

Dit zijn de algemene std::list-functies:

Functie Beschrijving insert()Deze functie voegt een nieuw item in voor de positie waar de iterator naar wijst.push_back()Deze functie voegt een nieuw item toe aan het einde van de lijst.push_front()Het voegt een nieuw item toe aan de voorkant van de lijst.pop_front()Het verwijdert de lijst first item.size()Deze functie bepaalt het aantal lijstelementen.front()To bepaalt de eerste items van de lijst.back()To bepaalt het laatste item van de lijst.reverse()Het keert de lijstitems om.merge()Het voegt twee samen gesorteerde lijsten.

Constructeurs

Hier is de lijst met functies die wordt geleverd door het header-bestand:

  • Standaardconstructor std::list::list()- Het creëert een lege lijst, die, met nul elementen.
  • Fill constructor std::list::list()- Het creëert een lijst met n elementen en kent een waarde van nul (0) toe aan elk element.
  • Bereikconstructor std::list::list()- maakt een lijst met veel elementen in het bereik van eerste tot laatste.
  • Copy constructor std::list::list()- Het creëert een lijst met een kopie van elk element in de bestaande lijst.
  • Move constructor std::list::list()- maakt een lijst met de elementen van een andere lijst met behulp van move-semantiek.
  • Initializer list constructor std::list::list()-Het maakt een lijst met de elementen van een andere lijst met behulp van move-semantiek.

Voorbeeld 2:

#include <iostream>
#include <list>
using namespace std;
int main(void) {
	list<int> l;
	list<int> l1 = { 10, 20, 30 };
	list<int> l2(l1.begin(), l1.end());
	list<int> l3(move(l1));  
	cout << "Size of list l: " << l.size() << endl;
	cout << "List l2 contents: " << endl;
	for (auto it = l2.begin(); it != l2.end(); ++it)
	      cout << *it << endl;
	cout << "List l3 contents: " << endl;
	for (auto it = l3.begin(); it != l3.end(); ++it)
		cout << *it << endl;
	return 0;
}

Uitvoer:

Hier is een screenshot van de code:

Code uitleg:

  1. Voeg het iostream-headerbestand toe om de functies ervan te gebruiken.
  2. Voeg het lijstkopbestand toe om de functies ervan te gebruiken.
  3. Neem de std-naamruimte op in de code om de klassen te gebruiken zonder deze aan te roepen.
  4. Roep de functie main() aan. De programmalogica moet worden toegevoegd aan de hoofdtekst van deze functie.
  5. Maak een lege lijst met de naam l.
  6. Maak een lijst met de naam l1 met een set van 3 gehele getallen.
  7. Maak een lijst met de naam l2 met alle elementen in de lijst met de naam l1, van het begin tot het einde.
  8. Maak een lijst met de naam l3 met behulp van verplaatsingssemantiek. De lijst l3 zal dezelfde inhoud hebben als de lijst l2.
  9. Druk het formaat van de lijst met de naam l af op de console naast andere tekst.
  10. Druk wat tekst af op de console.
  11. Maak een iterator met de naam en gebruik deze om de elementen van de lijst met de naam l2 te herhalen.
  12. Druk de elementen van de lijst met de naam l2 af op de console.
  13. Druk wat tekst af op de console.
  14. Maak een iterator met de naam en gebruik deze om de elementen van de lijst met de naam l3 te herhalen.
  15. Druk de elementen van de lijst met de naam l3 af op de console.
  16. Het programma moet waarde retourneren na succesvolle voltooiing.
  17. Einde van de hoofdtekst van de functie main().

Containereigenschappen

Hier is de lijst met containereigenschappen:

Eigendom Beschrijving SequenceSequence-containers ordenen hun elementen in een strikt lineaire volgorde. Elementen zijn toegankelijk op basis van hun positie in de reeks. Dubbel gelinkte lijst Elk element heeft informatie over hoe u vorige en volgende elementen kunt vinden. Dit zorgt voor een constante tijd voor invoeg- en verwijderingsbewerkingen. Allocator-aware Een allocator-object wordt gebruikt voor het dynamisch wijzigen van de opslaggrootte.

Invoegen in een lijst

Er zijn verschillende functies die we kunnen gebruiken om waarden in een lijst in te voegen. Laten we dit demonstreren:

Voorbeeld 3:

#include <algorithm>
#include <iostream>
#include <list>
int main() {
	std::list<int> my_list = { 12, 5, 10, 9 };
	my_list.push_front(11);
	my_list.push_back(18);
	auto it = std::find(my_list.begin(), my_list.end(), 10);
	if (it != my_list.end()) {
		my_list.insert(it, 21);
	}
	for (int x : my_list) {
		std::cout << x << '\n';
	}
}

Uitvoer:

Hier is een screenshot van de code:

Code uitleg:

  1. Voeg het headerbestand van het algoritme toe om de functies ervan te gebruiken.
  2. Voeg het iostream-headerbestand toe om de functies ervan te gebruiken.
  3. Voeg het lijstkopbestand toe om de functies ervan te gebruiken.
  4. Roep de functie main() aan. De programmalogica moet worden toegevoegd aan de hoofdtekst van deze functie.
  5. Maak een lijst met de naam my_list met een set van 4 gehele getallen.
  6. Voeg het element 11 toe aan de voorkant van de lijst met de naam my_list.
  7. Voeg element 18 in aan het einde van de lijst met de naam my_list.
  8. Maak er een iterator aan en gebruik deze om element 10 uit de lijst my_list te vinden.
  9. Gebruik een if-statement om te bepalen of het bovenstaande element is gevonden of niet.
  10. Voeg element 21 in voor het bovenstaande element als het is gevonden.
  11. Einde van de hoofdtekst van het if-statement.
  12. Gebruik een for-lus om een ​​lusvariabele x te maken. Deze variabele wordt gebruikt om de lijstelementen te herhalen.
  13. Druk de waarden van de lijst af op de console.
  14. Einde van de body van de for a-lus.
  15. Einde van de hoofdtekst van de functie main().

Verwijderen uit een lijst

Het is mogelijk om items uit een lijst te verwijderen. Met de functie wissen() kunt u een item of een reeks items uit een lijst verwijderen.

  • Als je een enkel item wilt verwijderen, geef je gewoon één geheel getal door. Het item wordt verwijderd.
  • Als je een bereik wilt verwijderen, geef je de begin- en einditerators door. Laten we dit demonstreren.

Voorbeeld 4:

#include <algorithm>
#include <iostream>
#include <list>
using namespace std;
int main() {
	std::list<int> my_list = { 12, 5, 10, 9 };
	cout << "List elements before deletion: ";
	for (int x : my_list) {
		std::cout << x << '\n';
	}
	list<int>::iterator i = my_list.begin();
	my_list.erase(i);
	cout << "\nList elements after deletion: ";
	for (int x : my_list) {
		std::cout << x << '\n';
	}
	return 0;
}

Uitvoer:

Hier is een screenshot van de code:

Code uitleg:

  1. Voeg het headerbestand van het algoritme toe om de functies ervan te gebruiken.
  2. Voeg het iostream-headerbestand toe om de functies ervan te gebruiken.
  3. Voeg het lijstkopbestand toe om de functies ervan te gebruiken.
  4. Neem de std-naamruimte op in ons programma om de klassen te gebruiken zonder deze aan te roepen.
  5. Roep de functie main() aan. De programmalogica moet worden toegevoegd aan de hoofdtekst van deze functie.
  6. Maak een lijst met de naam my_list met een set van 4 gehele getallen.
  7. Druk wat tekst af op de console.
  8. Gebruik een for-lus om een ​​lusvariabele x te maken. Deze variabele wordt gebruikt om de lijstelementen te herhalen.
  9. Druk de waarden van de lijst af op de console.
  10. Einde van de body van de for-lus.
  11. Maak een iterator i die verwijst naar het eerste element van de lijst.
  12. Gebruik de erase() functie die door de iterator i wordt aangegeven.
  13. Druk wat tekst af op de console.
  14. Gebruik een for-lus om een ​​lusvariabele x te maken. Deze variabele wordt gebruikt om de lijstelementen te herhalen.
  15. Druk de waarden van de lijst af op de console. Dit komt na verwijdering.
  16. Einde van de body van de for-lus.
  17. Het programma moet een waarde retourneren na succesvolle voltooiing.
  18. Einde van de hoofdtekst van de functie main().

Samenvatting:

  • De std::list is een opslagcontainer.
  • Hiermee kunnen items op een constant tijdstip overal worden ingevoegd en verwijderd.
  • Het is geïmplementeerd als een dubbele link
  • De std::list-gegevens zijn bidirectioneel en sequentieel toegankelijk.
  • std::list ondersteunt geen snelle willekeurige toegang. Het ondersteunt echter sequentiële toegang vanuit alle richtingen.
  • Je kunt lijstelementen van std::list in verschillende geheugenblokken strooien.
  • Je kunt std::list van beide kanten naar behoefte verkleinen of vergroten tijdens runtime.
  • Om items in std::list in te voegen, gebruiken we de functie insert().
  • Om items uit de std::list te verwijderen, gebruiken we de erase() functie.

C Taal

  1. Operators in C++ met voorbeeld:wat is, typen en programma's
  2. C++ do...while-lus met voorbeelden
  3. C++ Switch Case Statement met VOORBEELD
  4. C++ Dynamische toewijzing van arrays met voorbeeld
  5. C++-aanwijzers met voorbeelden
  6. Overbelasting van C++-operator met voorbeelden
  7. C++-structuur met voorbeeld
  8. C++-functies met programmavoorbeelden
  9. Verschil tussen structuur en klasse:uitgelegd met C++-voorbeeld
  10. Python-teller in verzamelingen met voorbeeld
  11. Python List count() met VOORBEELDEN