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.
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:
- Set
- Multiset
- Kaart
- 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.