C ++ settfunksjoner

C ++ settfunksjoner
"Vi kan bruke C ++ 's mange gunstige funksjoner og verktøy for å hjelpe til med dynamisk programmering. En av disse delene er et sett som finnes i standardmalbiblioteket, som tilbyr en mekanisme for effektivt lagring av data på en organisert måte. I denne C ++ Set -opplæringen vil vi snakke om alle de grunnleggende om C ++ SET -funksjonene.

C ++ STLs strukturer for å holde gjenstander i en bestemt rekkefølge kalles sett. Et sett må ha unike komponenter. Hvert element i et sett kan identifiseres med verdien individuelt, slik at de fungerer som nøkler. I C ++ kan vi legge til og slette elementer fra et sett; Vi kan imidlertid ikke endre komponentenes verdier fordi de er statiske etter å ha blitt plassert i settet.”

Definisjon av sett i C++

Som det allerede er sagt, er sett bare den typen standardmalbibliotekbeholdere som brukes i C ++ for å lagre varer nøyaktig. Sett kan bare bli utsatt for metodene for innsetting og sletting. I et innstilt type objekt er elementene automatisk organisert i en spesifisert rekkefølge. Vi kan ikke endre eller oppdatere verdiene til de allerede eksisterende komponentene i et sett fordi gjenstandene i containerne er uforanderlige. Ved å definere det nøyaktig, fungerer et element i et sett som en nøkkel for seg selv. Sett er bare aktivert for å inneholde en spesifikk verdi.

Når skal du bruke sett?

I konkurrerende programmering er sett mye ansatt som containere. Når det er nødvendig å lagre gjenstander på en kategorisert måte, kan vi vurdere å bruke sett, men husk at sett ikke tillater lagring av gjentatte verdier. Når den er lagt inn, kan ikke verdien endres.

Implementering av settene

For å samhandle med sett, bør de to hovedoverskriftsfilene integreres. Sett får tilgang til ved å bruke iteratorer. Integrer #include og #include i koden din. Vi har valget mellom å bruke akkurat denne ene overskriftsfilen i stedet for disse to. Biblioteket fungerer som en erstatning for over-nevnte overskriftsfiler. Vi kan bare bruke denne ene overskriftsfilen fordi den inneholder alle overskriftsfilene. Binære søketrær brukes til å definere sett på internt nivå.

Angi egenskaper i C++

Følgende er noen av de vanlige settattributtene i C ++:

  • Karakteristikken for unikhet: I C ++ må hvert medlem av et sett være distinkt; Gjentatte gjenstander aksepteres ikke. Som et resultat støtter ikke sett i C ++ repetisjon.
  • Funksjonen ved å være organisert: Komponentene i en settbeholder lagres vanligvis på en organisert måte.
  • Evnen til å være uforanderlig: Når gjenstander er lagret i et sett, kan de ikke endres. Som et resultat er det ikke nødvendig med tillegg og fjerning, å oppdatere eller endre settets eksisterende komponenter.
  • Attributtet til intern utførelse: en BST brukes til å logisk sett lage et sett i C++.
  • Funksjonen ved indeksering: Ettersom C ++ standardmalbibliotek ikke vil gi indeksering, har settene i C ++ også funksjonen ved å være unindekset.

Syntaks av sett

Følgende er STD :: SET -erklæringen fra “Set” -biblioteket:

Parametere

  • Nøkkel: Type av komponenten representert i nøkkelen. Enhver annen datastruktur, for eksempel en brukerdefinert type, kan brukes i stedet for nøkkelen.
  • Tildelinger: Dette vil være gjenstandene som har ansvaret for å innlemme lagringsadministrasjon. Hver gang vi ønsker å skille tildeling og utføre skapelse i 2 faser, må vi bruke STD :: Allocator. Når sekvensiell eliminering og dynamisk minne blir utført i 2 faser, brukes det også. Returverdien for typen argumentallokator i alle containere er std :: allocator. De nye og slette operatørene er alt som den grunnleggende tildelingen bruker for å skaffe og avlaste lagring.
  • Sammenligne: En binær attributt med to parametere som har en lignende type som komponenter og en bool -returverdi. Hvis et element anses å komme før nøkkelen i sekvensering av funksjonen definerer, må setningen Comp (x, y), der COMP være et objekt av denne typen og x og y er nøkkelverdier, må derfor generere sann. Denne uttalelsen brukes av det angitte objektet for å evaluere arrangementet av komponentene inne i beholderen, så vel som om to varetastene er like (ved instinktivt sammenligne dem: de er like hvis de! komp (x, y) &&!komp (y, x)).

En settbeholder kan inneholde unike komponenter. Dette kan være et funksjonsobjekt eller en funksjonspeker. Mindre er standardverdien, og den gir de samme resultatene som å bruke mindre enn uttrykket (x

Funksjoner på sett

I C ++ kan sett utsettes for et bredt utvalg av operasjoner. La oss evaluere noen av de viktigste settteknikkene.

  • Begynn () Funksjon: En iterator som peker på det første elementet i settet returneres av denne funksjonen.
  • Slutt () Funksjon: Denne metoden gir en iterator som peker på punktet ved siden av det siste elementet i settet i den teoretiske tilnærmingen.
  • Tom () funksjon: den brukes til å avgjøre om settet er tomt eller ikke.
  • Størrelse () Metode: Den gir det totale antallet elementer i et sett.
  • MAX_SIZE () -funksjon: Den henter den øvre grensen til et setts elementer eller den høyere verdien som et sett har plass til.
  • Rbegin (): Denne funksjonen, i motsetning til å begynne (), gir en omvendt iterator som peker på den endelige verdien av et sett.
  • Rend (): I motsetning til slutt () -funksjonen, gir den en reversert iterator som peker på stedet logisk før den aller siste verdien av et sett.
  • Sletting () -funksjon: Når det brukes på et sett, eliminerer det varen på stedet som er angitt med pekeren som er spesifisert i parameteren.
  • Slett (const_n): Denne metoden fjerner umiddelbart verdien “n” fra et sett når den leveres som et argument.
  • Sett inn (const n): Denne metoden legger til et nytt medlem, "n" i settet.
  • Finn (n): Det finner settet for det definerte elementet og gir en iterator som refererer til plasseringen av komponenten som ble identifisert. Den produserer en iterator som peker mot slutten av varen som ikke kan hentes.
  • Count (const n): Denne funksjonen teller antall ganger den medfølgende verdien “n” vises og gir 0 eller 1 avhengig av om varen ble hentet eller ikke.
  • Clear () Funksjon: Det eliminerer hvert element fra et sett.

Eksempel nr. 1

I dette tilfellet vil et sett bli initialisert. I C ++ spesifiserer vi de forskjellige typer elementer som vil bli plassert i et sett når det opprettes. Datapunktene til et sett lagres vanligvis i stigende rekkefølge. Den større funksjonen kan brukes til å holde data i synkende rekkefølge. Blank sett

  • Bruke verdier
  • Ved hjelp av en matrise.
  • Bruke et annet sett.

Dette er mange teknikker for å erklære et sett.

#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()

sett1;
settS2;
sett S3 = 62, 17, 25, 81;
sett S4 (S3);
int ar [] = 15, 24, 75, 51;
sett S5 (AR, AR+4);
Sett :: Iterator I;
for (auto i = s5.begynne(); Jeg!= S5.end (); i ++)

cout<
retur 1;

Overskriftsfilene og vil bli integrert først. Etter dette vil det standardnavnet bli brukt. Hovedfunksjonen () vil bli kalt. Det første settet vil bli initialisert, og det vil være et tomt sett, da det ikke inneholder noe element. Det andre settet vil bli erklært som et tomt sett i synkende rekkefølge. Det nye settet vil bli initialisert ved å legge til forskjellige heltall til det. Dette settet inneholder fire elementer.

Videre vil vi initialisere et nytt sett som heter “S4” ved bruk av et annet sett, “S3”. Vi ga verdiene til S3 som parametrene til S4. Nå vil settet bli erklært fra en matrise. Vi spesifiserer verdiene i matrisen og lagrer deretter disse verdiene i en variabel "a". Det femte settet inneholder de 4 verdiene til matrisen. Deretter vil vi definere iteratoren for disse nødvendige settene. Vi vil skaffe verdiene til alle settene ved bruk av "for" -sløyfen.

Eksempel nr. 2

Denne illustrasjonen demonstrerer hvordan settets innsetting og slettingsmetoder fungerer.

#inkludere
ved hjelp av navneområdet STD;
int main ()

sett S1;
S1.sett inn (22);
S1.sett inn (33);
S1.sett inn (56);
S1.sett inn (9);
S1.sett inn (67);
S1.sett inn (47);
S1.sett inn (88);
Sett :: Iterator P_1, P_2, P_3;
cout<< " The values of the set are: \n" ;
for (p_1 = s1.begynne() ; P_1 != S1.slutt() ; P_1 ++)

cout<< *p_1 << " " ;

cout<sett S2 (S1.Begynn (), S1.slutt() );
sett :: Iterator I;
P_2 = S1.finn (22);
P_3 = S1.finn (88);
S1.Sletting (P_2, P_3);
cout<< " The values of the set after using erase() function: \n " ;
for (p_1 = s1.begynne() ; P_1 != S1.slutt() ; P_1 ++)

cout<< *p_1 << " ";

cout<cout<< " The values of second set are: \n" ;
for (i = s2.begynne() ; Jeg != S2.slutt() ; i ++)

cout<< *i<< " ";

retur 0;

De nødvendige bibliotekene vil bli inkludert i begynnelsen av programmet. Standard navneområdet vil bli lagt til som "STD". Nå vil hovedmetoden () bli påkalt. La oss erklære forskjellige sett. Vi vil kalle Sett inn () -metoden for å legge til verdiene i settet. Ulike pekere vil bli opprettet og kalt “P_1”, “P_2” og “P_3”. Iteratoren vil bli erklært som disse pekerne. "Cout" -uttalelsen vil bli brukt til å skildre linjen "setets verdier er". Nå vil "for" -sløyfen bli brukt til å vise alle de innsatte verdiene til settet.

Begynnelsen () vil bli kalt for å starte verdiene til settet som skal skrives ut, og slutt () metoder vil bli brukt for å avslutte verdiene til settet. Disse metodene vil bli påkalt inne i "for" -sløyfen. Konstruktøren av den første pekeren vil bli definert i "cout" -uttalelsen. Nå vil vi lage et annet sett ved å organisere verdiene i synkende rekkefølge. Elementene i den første og andre nødvendige sett er de samme.

Finn () -funksjonen vil bli kalt på elementene i det første definerte settet. Denne funksjonen får de definerte verdiene fra settet. Nå vil vi bruke Erase () -metoden for å slette verdiene fra det første settet. Verdiene som vil bli slettet er fra 22 til 88. "COUT" -uttalelsen vil bli brukt til å vise teksten "Verdiene til settet etter bruk av erase () -funksjon". For å vise verdiene, vil "for" -løkken bli brukt.

Da blir konstruktøren av den første pekeren erklært. Nå bruker vi “For” -løkken for å skrive ut varene til det andre nødvendige settet. Uttalelsen “cout” skriver ut linjen “verdiene til det andre settet er”. Før du legger til “Return 0” -kommandoen, vil konstruktøren av iteratorvariabelen opprettes.

Eksempel nr. 3

I dette eksemplet vil to funksjoner, finne () og slette, bli brukt. Hvis elementet er identifisert, produserer Find () -metoden en iterator som refererer til den; Ellers gir den en iterator som refererer til settets slutt. Elementene i settet vil fjerne ved hjelp av slettingsfunksjonen ().

#inkludere
ved hjelp av navneområdet STD;
int main ()

SETS_1;
S_1.sett inn (45);
S_1.sett inn (12);
S_1.sett inn (17);
S_1.sett inn (89);
S_1.sett inn (25);
S_1.sett inn (14);
S_1.Sett inn (78);
S_1.sett inn (34);
Sett :: Iterator I;
cout<<"Values of required set: \n";
for (i = s_1.begynne() ; Jeg != S_1.slutt() ; i ++)

cout<<*i<< " ";

cout<cout<< " Updated set \n " ;
S_1.Sletting (S_1.Begynn (), S_1.finn (25));
for (i = s_1.begynne() ; Jeg!= S_1.slutt() ; i ++)
cout<< *i<< " " ;
cout<cout<< " lower bound of 45 is: \n" ;
cout<< *s_1.lower_bound( 45 )<cout<< " lower bound of 17 is: \n" ;
cout<< *s_1.lower_bound( 17 ) <cout<< " upper bound of 45 is: \n" ;
cout<< *s_1.upper_bound( 45 ) <cout<< "upper bound of 17 is: \n" ;
cout<< *s_1.upper_bound( 17 ) <retur 0;

Programmet vil omfatte relevante biblioteker i begynnelsen som heter . Standard navneområdet som "STD" vil bli introdusert. En referanse til hovedfunksjonen () vil nå bli gjort. Spesifiser settet først. For å inkludere verdiene i settet, vil vi bruke Insert () -funksjonen. Iteratoren vil bli identifisert som "jeg"; Verdiene til det aktuelle settet vises ved hjelp av “cout” -kommandoen. "For" -sløyfen vil nå bli brukt til å vise alle settets innsatte verdier.

BEGIN () -funksjonen vil bli brukt til å begynne å skrive ut settets verdier, og END () -metoden vil bli brukt til å fullføre å skrive ut settets verdier. Disse definerte metodene vil bli brukt inne i "for" -sløyfen. "Cout" -uttalelsen vil erklære konstruktøren til iteratoren. Teksten “Oppdatert sett” vises ved hjelp av COUT -setningen. Det første settets komponenter vil bli bestemt ved å bruke Find () -funksjonen. De definerte verdiene oppnås ved denne funksjonen fra settet.

For å fjerne verdiene fra det første settet, vil vi nå bruke slettemetoden (). Opptil 25 verdier vil bli eliminert. Ved hjelp av en "for" -sløyfe vil de gjenværende heltallene bli presentert. "Cout" -uttalelsen vil gi en erklæring om iteratorens konstruktør. Nedre grense- og øvre grenseoperasjoner på settets verdier vil bli utført. Settets 45 og 17 verdier vil bli gitt til den nedre grensen () -funksjonen, som deretter vil bruke “cout” -kommandoen til å skrive ut resultatet. Disse lignende verdiene i settet vil bli behandlet på en øvre grense () -metode. Utfallsverdien vil bli skrevet ut av “cout” -kommandoen. Kommandoen “retur 0” vil bli lagt til på slutten.

Konklusjon

Vi har diskutert C ++ SET -funksjoner i denne guiden. I likhet med andre standardbibliotekpakker er C ++ -settet avgjørende. Det gjør det lettere for utviklere å trekke ut og manipulere verdier. Vi har implementert tre programmer. Initialisering av settene håndteres i det første eksemplet. Den andre viser tillegg og fjerning av verdier fra settet. I siste tilfelle velger vi noen få verdier fra settet og fjerner dem deretter.