set stl
Leer snel SET in STL met eenvoudige voorbeelden.
We zullen de STL-container - Sets hier in deze tutorial uitgebreid bekijken. Sets zijn associatieve containers met unieke elementen in een specifieke volgorde.
De waarde van een element in de set is ook de sleutel die wordt gebruikt om er toegang toe te krijgen. Alle elementen in de set moeten uniek zijn. We kunnen de elementen in de set niet wijzigen nadat ze zijn ingevoegd. We kunnen de elementen echter invoegen of verwijderen.
Kijk hier voor een complete C ++ GRATIS trainingsreeks.
Wat je leert:
IN STL
Om set te implementeren, moeten we de header in ons programma opnemen.
datagedreven raamwerk in selenium webdriver voorbeeld
We kunnen een set als volgt declareren:
Bijvoorbeeld,als we een set, myset van een element met integer type willen, dan kunnen we de set declareren als:
Operaties op de set
De set-container ondersteunt ook vergelijkbare bewerkingen, zoals een kaart die we al hebben besproken. Hieronder volgen enkele van de basisbewerkingen die door de set worden ondersteund.
- beginnen : Retourneert de iterator naar het eerste element van de set.
- einde : Retourneert een iterator naar het element dat volgt op het laatste element van de set.
- invoegen : Voegt een nieuw element in de set in.
Invoegbewerking voor de set kent drie varianten:
-
-
- insert (element): Hierdoor wordt het element direct in de set ingevoegd en wordt de set opnieuw geordend.
- invoegen (positie, hint): Hier specificeren we de positie om het element in te voegen.
- invoegen (iterator.begin (), iterator.end ()): In deze variatie kunnen we het bereik rechtstreeks in de set invoegen, zoals een array of een andere set.
-
- wissen : Verwijdert een element uit de set.
- grootte : Retourneert de grootte van de set.
- max_size : Retourneert de maximale grootte die de set kan bevatten.
- leeg : Geeft terug of de set leeg is.
- Doorzichtig : Verwijdert alle elementen uit de set.
- vind : Vindt een element in de set. Als een element wordt gevonden, retourneert het de iterator naar dat element in de set. Indien niet gevonden, retourneert het een iterator aan het einde van de set.
Hieronder wordt een programma gegeven dat het gebruik van enkele belangrijke functies van SET laat zien.
Uitgang:
Grootte van myset: 4
De set myset is: 120130140160
Na het plaatsen van 100 is de set myset: 100120130140160
Na het invoegen van array arr, is de set myset: 100110120130140150160
Na verwijdering van elementen van minder dan 130, myset: 130140150160
Zoals te zien is in de uitvoer hierboven, maken we een set met behulp van een eenvoudige invoegfunctie.
Vervolgens voegen we element 100 in de set in met een andere variant van de insert-functie door iteratorreferentie en elementwaarde 100 door te geven. We zien dat als de insertie klaar is, de set opnieuw geordend wordt en de volgorde van de elementen behouden blijft.
Vervolgens voegen we een array {110,150,150} in met de functie insert. Als je de set-uitvoer ziet na het invoegen van een array, zien we dat er slechts één waarde van 150 in de set wordt ingevoerd. Dit komt omdat alle elementen in de set uniek zijn.
Ook de maat van de set laten we zien. Vervolgens zoeken we met de functie find de elementen die kleiner zijn dan 130 en roepen we de wisfunctie aan om deze elementen te verwijderen. Vervolgens geven we de resulterende set weer.
Dit gaat allemaal over de ingestelde container. Vervolgens zullen we multiset bespreken die een uitbreiding zijn van de ingestelde container.
Multiset
Een multiset is een associatieve container die in alle aspecten vergelijkbaar is met set, behalve één verschil, d.w.z. meerdere elementen kunnen dezelfde waarde hebben.
De declaratie voor multiset is als volgt:
Een multiset van integer-elementen kan worden gedeclareerd als:
multiset mset;
Diverse bewerkingen die door multiset worden ondersteund, zijn vergelijkbaar met die welke door set worden ondersteund.
Nu zullen we direct een voorbeeld van een multiset bespreken dat de bewerking laat zien die het gebruikt.
Uitgang:
Grootte van myset: 4
Na het invoegen van vier elementen, is de multiset myset: 10 11 13
13
Na het invoegen van 15, is de multiset myset: 10 11 13 13 15
Na verwijdering van elementen van minder dan 15, myset: 15
de standaardgateway is niet beschikbaar windows 8
Screenshot van de output wordt hieronder gegeven:
Zoals te zien is in de bovenstaande uitvoer, voeren we aanvankelijk vier elementen in de multiset in, waarvan er twee hetzelfde zijn. Maar in tegenstelling tot een set, worden deze elementen met succes in de multiset ingevoegd. Vervolgens voegen we een ander element 15 in door positie te geven via een iterator, die met succes is ingevoegd.
Vervolgens vinden we elementen kleiner dan 15 in de multiset en bellen wissen op deze elementen. Ten slotte geven we de multiset weer.
Ongeordende set
Tot nu toe hebben we set en multiset in deze tutorial besproken.
Hoewel de set een geordende reeks unieke sleutels is, hebben we nog een associatieve container die 'ongeordende set' wordt genoemd, een set sleutels of elementen die in willekeurige volgorde worden opgeslagen. Dit betekent dat de elementen in de ongeordende set ‘ongeordend’ zijn.
Net als bij een ongeordende kaart, wordt de ongeordende set ook geïmplementeerd met behulp van een hashtabel waarbij de sleutels worden gehasht in indices van de hashtabel. Door het gebruik van een hashtabel is het niet mogelijk om de volgorde van elementen aan te houden in tegenstelling tot de set die een gebalanceerde boomstructuur gebruikt.
De header voor het implementeren van ongeordende set is.
We declareren een ongeordende kaart van het type integer als volgt:
Bewerkingen die worden ondersteund door unordered_set zijn vergelijkbaar met degene die worden ondersteund door unordered_map, die worden besproken in onze tutorials op kaart.
Hieronder is een voorbeeld gegeven dat de verschillende bewerkingen op unordered_set laat zien.
Uitgang:
Grootte van uset: 5
Elementen in ongeordende set zijn: 99 39 6 5 26 4 3 13 2
Gevonden sleutel = 13
umap bucket_count: 11
bucket_size: 2
Screenshot van de bovenstaande output wordt hieronder gegeven.
Zoals getoond in de bovenstaande uitvoer, voegen we eerst 5 elementen in de ongeordende set in en voegen vervolgens nog eens 4 elementen toe die het gebruik van variaties in de invoegfunctie demonstreren. Vervolgens tonen we de inhoud van de ongeordende set.
Vervolgens maken we gebruik van de zoekfunctie om te achterhalen of de sleutel = 13 aanwezig is in de ongeordende set of niet.
Hierna demonstreren we nog twee functies ‘bucket_count’ en ‘bucket_size’. Deze functies zijn gerelateerd aan de interne implementatie van de ongeordende kaart.
Deze container ondersteunt ook de andere iteratorfuncties en functies zoals max_size, clear, erase, empty, etc. die vergelijkbaar is met andere STL-containers.
Gevolgtrekking
Hiermee zijn we aan het einde gekomen van onze tutorial over SET in STL.
We hopen dat de onderwerpen die als onderdeel van deze STL-tutorials aan bod komen, je zullen helpen om STL en de verschillende containers te begrijpen.
maak een nieuw java-project in eclipse
Lees hier de populaire C ++ trainingsserie.
Aanbevolen literatuur
- Prioriteitswachtrij in STL
- Lijsten in STL
- KAARTEN In STL
- Stapels en wachtrijen in STL
- Iteratoren in STL
- Arrays in STL
- Snaren, paar en tuples in STL
- Algoritmen in STL