STL in c ++: alles wat u moet weten



Dit artikel geeft je een gedetailleerde en uitgebreide kennis van STL in C ++ en geeft je ook een idee over de verschillende containers.

De Standard Template Library (STL) is een set van C ++ templateklassen die algemene programmeergegevensstructuren en -functies bieden, zoals lijsten, stapels, arrays, enz. In dit STL in C ++ artikel zullen we de volgende aanwijzingen bespreken:

Verdergaan met dit artikel over STL in C ++





C ++ -sjablonen

C ++ biedt ons een kenmerk van sjablonen waarmee functies en klassen kunnen werken met generieke typen. Dit maakt de herbruikbaarheid van een functie of klasse mogelijk en stelt het in staat om op veel verschillende gegevenstypen te werken zonder voor elk te worden herschreven.

Verdergaan met dit artikel over STL in C ++



Generieke functies en STL

Tijdens het programmeren is er vaak behoefte aan het creëren van functies die dezelfde bewerkingen uitvoeren, maar met verschillende gegevenstypen werken. Om dit probleem op te lossen, biedt C ++ een functie om een ​​enkele generieke functie te maken in plaats van veel functies die met verschillende gegevenstypen kunnen werken door de sjabloonparameter te gebruiken. De verzameling van deze genrische klassen en functies wordt Standard Template Library (STL) genoemd

De componenten van STL die nu deel uitmaken van de standaard C ++ - bibliotheek worden gedefinieerd in de naamruimte std. We moeten daarom de gebruikende naamruimte-instructie gebruiken om ze in ons programma te importeren.

Syntaxis:



Namespace std; gebruiken

STL heeft drie componenten

  • Containers

  • Algoritmen

  • Iteratoren

Deze drie componenten werken synergetisch met elkaar samen om ondersteuning te bieden aan een verscheidenheid aan programmeeroplossingen. Algoritme gebruiken iteratoren om bewerkingen uit te voeren die in containers zijn opgeslagen.

Een container is een object dat gegevens op een georganiseerde manier in het geheugen opslaat. De containers in STL worden geïmplementeerd door sjabloonklassen en kunnen daarom gemakkelijk worden aangepast en aangepast om verschillende soorten gegevens te bevatten.

Een procedure die wordt gebruikt om de gegevens in de containers te verwerken, wordt gedefinieerd als een algoritme. De STL bevat veel verschillende soorten algoritmen om ondersteuning te bieden bij taken zoals initialiseren, zoeken, kopiëren, sorteren en samenvoegen, kopiëren, sorteren en samenvoegen. Algoritmen worden geïmplementeerd door sjabloonfuncties.

Een iterator kan worden gedefinieerd als een object dat naar een element in een container verwijst. Iteratoren kunnen worden gebruikt om door de inhoud van containers te bewegen. Iteratoren worden net als aanwijzingen behandeld. We kunnen ze verhogen of verlagen. Iterators verbinden algoritme met containers en spelen een sleutelrol bij de manipulatie van gegevens die in de containers zijn opgeslagen.

Container-STL-in-C++

Verdergaan met dit artikel over STL in C ++

Containers

STL definieert tien containers die zijn gegroepeerd in drie categorieën.

Containers

Omschrijving

Header-bestand

Iterator

Vector

Het kan worden gedefinieerd als een dynamische array. Het geeft directe toegang tot elk element.

Willekeurige toegang

Lijst

Het is een bidirectionele lineaire lijst. Het kan overal worden ingevoegd en verwijderd

Bidirectioneel

en

c ++ wat is naamruimte

Het is een dubbele wachtrij. Staat invoegingen en verwijderingen aan beide uiteinden toe. Geeft directe toegang tot elk element.

Willekeurige toegang

set

Het is een bijbehorende container voor het opslaan van unieke sets. Maakt snelle opzoeken mogelijk.

Bidirectioneel

multiset

Het is een bijbehorende container voor het opslaan van niet-unieke sets.

Bidirectioneel

kaart

Het is een bijbehorende container voor het opslaan van unieke sleutel / waarde-paren. Elke sleutel is gekoppeld aan slechts één waarde.

Bidirectioneel

multimap

Het is een geassocieerde container voor het opslaan van sleutel / waarde waarin een sleutel kan worden geassocieerd met meer dan één waarde (een-op-veel-toewijzing). Het maakt een sleutelgebaseerde zoekopdracht mogelijk.

Bidirectioneel

stapel

Een standaardstapel volgt de last-in-first-out (LIFO)

Geen iterator

wachtrij

Een standaardwachtrij volgt first-in-first-out (FIFO)

Geen iterator

prioriteits-rij

Het eerste element is altijd het element met de hoogste prioriteit

Geen iterator

Volgorde containers

Volgordecontainers slaan elementen in een lineaire volgorde op. Alle elementen zijn aan elkaar gerelateerd door hun positie langs de lijn. Ze maken het inbrengen van een element mogelijk en ze ondersteunen allemaal verschillende bewerkingen erop.

De STL biedt drie soorten reekselementen:

  • Vector
  • Lijst
  • en

Associatieve containers:

Ze zijn zo ontworpen dat ze directe toegang tot elementen met behulp van sleutels kunnen ondersteunen. Ze zijn niet opeenvolgend. Er zijn vier soorten

associatieve containers:

  1. Set
  2. Multiset
  3. Kaart
  4. Multimap

Alle bovenstaande containers slaan gegevens op in een structuur genaamd boom die snel vergemakkelijkt

zoeken, verwijderen en invoegen in tegenstelling tot sequentieel. Een containerset of multiset kan verschillende items opslaan en bewerkingen bieden om ze te manipuleren met de waarden als de sleutels.

En kaart of Multimap worden gebruikt om items in paren op te slaan, de ene heet de sleutel en de andere

noemde de waarde.

Afgeleide containers:

De STL biedt drie afgeleide containers, namelijk stapel, wachtrij en prioriteit_wachtrij. Deze worden ook wel containeradapters genoemd.

Er zijn drie soorten afgeleide containers:

1. stapel

2. wachtrij

3. prioriteit_quue

Stapels, wachtrijen en prioriteitswachtrijen kunnen eenvoudig worden gemaakt op basis van verschillende volgordecontainers. De afgeleide containers ondersteunen geen iteratoren en daarom kunnen we ze niet gebruiken voor gegevensmanipulatie. Ze ondersteunen echter de functie pop () en push () met twee leden voor het implementeren van verwijder- en invoegbewerkingen.

Verdergaan met dit artikel over STL in C ++

Algoritmen

Algoritmen zijn functies die over het algemeen in verschillende containers kunnen worden gebruikt voor het verwerken van hun inhoud. Hoewel elke container functies biedt voor de basisbewerkingen, biedt STL meer dan zestig standaardalgoritmen om meer uitgebreide of complexe bewerkingen te ondersteunen. Dankzij standaardalgoritmen kunnen we ook met twee verschillende soorten containers tegelijk werken.

STL-algoritmen versterken de filosofie van herbruikbaarheid. Door deze algoritmen te gebruiken, kunnen programmeurs veel tijd en moeite besparen. Om toegang te hebben tot de STL-algoritmen, moeten we dit in ons programma opnemen.

STL-algoritme, gebaseerd op de aard van de bewerkingen die ze uitvoeren, kan worden gecategoriseerd als onder:

  • Niet-muterende algoritmen

  • Muterende algoritmen

  • Sorteeralgoritmen

  • Stel algoritmen in

  • Relationeel algoritme

Verdergaan met dit artikel over STL in C ++

Iteratoren:

Iterators werken als verwijzingen en worden gebruikt om toegang te krijgen tot elementen van de container. We gebruiken iteratoren om door de inhoud van containers te navigeren. Iteratoren worden net als aanwijzingen behandeld. We kunnen ze verhogen of verlagen volgens onze vereisten. Iterators verbinden containers met algoritmen en spelen een cruciale rol bij de manipulatie van gegevens die in de containers zijn opgeslagen. Ze worden vaak gebruikt om van het ene element naar het andere te gaan, dit proces wordt itereren door de container genoemd.

Er zijn vijf soorten iteratoren:

1. invoer

2. uitgang

3. doorsturen

4. bidirectioneel

5. willekeurig

Iterator

Toegangsmethode

Richting van beweging

I / O-mogelijkheid

Opmerking

Invoer

Lineair

Alleen doorsturen

Alleen lezen

Kan niet worden opgeslagen

Uitvoer

Lineair

Alleen doorsturen

Alleen schrijven

Kan niet worden opgeslagen

Vooruit

Lineair

Alleen doorsturen

Lezen schrijven

Kan worden opgeslagen

Bidirectioneel

Lineair

Vooruit en achteruit

Lezen schrijven

Kan worden opgeslagen

Willekeurig

Willekeurig

Vooruit en achteruit

Lezen schrijven

Kan worden opgeslagen

Er moeten verschillende soorten iteratoren worden gebruikt met de verschillende soorten containers, zodat alleen

sequentie- en associatieve containers mogen door iteratoren reizen. Elk type iterator wordt gebruikt voor het uitvoeren van bepaalde functies. De input- en output-iteratoren ondersteunen de minste functies. Ze kunnen alleen worden gebruikt om er doorheen te gaan in een container. De voorwaartse iteratoren ondersteunen alle bewerkingen van invoer- en uitvoer-iteratoren en behouden ook hun positie in de container. Een bidirectionele iterator, die alle voorwaartse iteratorbewerkingen ondersteunt, biedt de mogelijkheid om in de achterwaartse richting in de container te bewegen.

Zo zijn we aan het einde gekomen van dit artikel over ‘STL in C ++’. Als je meer wilt weten, bekijk dan de door Edureka, een vertrouwd online leerbedrijf. Edureka's Java J2EE- en SOA-trainings- en certificeringscursus is ontworpen om u te trainen in zowel kern- als geavanceerde Java-concepten, samen met verschillende Java-frameworks zoals Hibernate & Spring.

Heeft u een vraag voor ons? Vermeld het in het opmerkingengedeelte van deze blog en we nemen zo snel mogelijk contact met je op.