En hash -tabell brukes til å konstruere et uordnet sett der verdiene blir konvertert til hash -tabellindekser for å sikre at å sette inn en verdi alltid blir tilfeldig tildelt. Faktum er at de opererer godt nok og normalt gir en konstant tidssøkingsoperasjon. Alle funksjoner på det uordnede settet krever vanligvis en konstant tid O (1). Selv om de i den verste situasjonen kan ta opp til den lineære tiden o (n) basert på den operasjonelle hasjalgoritmen.
Det uordnede settet kan omfatte nøkler av noe slag, enten de er forhåndsdefinerte eller brukerdefinerte datatyper. Men når vi erklærer nøklene til de brukerdefinerte datastrukturer, må vi derfor indikere sammenligningsmetoden som brukes til å sammenligne nøklene.
Forskjell mellom sett og uordnet sett
Et sett er en bestilt samling av forskjellige nøkler. Men et uordnet sett er en samling nøkler som kan ordnes i hvilken som helst sekvens. Implementering av sett som en balansert trestruktur gjør det mulig å beholde rekkefølgen på komponentene. Setoperasjoner har en O (log n) tidskompleksitet, men et uordnet sett har en O (1). Tallrike metoder er definert for det uordnede settet. Men de mest populære er størrelsen og den tomme metoden for lagring, å finne verdien av nøkkelen, og sette inn og fjerne for konfigurasjon. Bare de distinkte tastene støttes av det uordnede settet; For dupliserte nøkler kan det brukes en uordnet multisett.
Funksjoner som brukes til uordnede sett
Det uordnede settet har følgende metoder:
Utførelsen av forskjellige uordnede funksjoner i C ++ språk dekkes i denne artikkelen.
Eksempel 1:
Gjennomsnittlig prosesseringstid for funksjonene for funn (), innsats () og sletting () er konstant. Hvis nøkkelen ikke er til stede i det definerte settet, gir Find () -metoden en iterator til slutt () -funksjonen; ellers returnerer den en iterator til nøkkelattributtet. For å skaffe nøkkelen ved å henvise nøkkelverdiene med * operatøren, fungerer iteratoren som en peker til nøkkelattributtene. Følgende er en forekomst av en erklæring for Find (), Sett inn () og iterasjonsfunksjoner i et uordnet sett.
#inkludereVi innlemmer overskriftsfilen i begynnelsen av denne koden. Deretter går vi inn i standard navneområdet som STD. Deretter påkaller vi main () -funksjonen. Innenfor denne funksjonen erklærer vi det uordnede settet. Her bruker vi et uordnet sett for å ordne elementene i settene. Vi passerer strengen som parameter for den uordnede settfunksjonen. Deretter setter vi inn de forskjellige strengene i settene. Vi passerer de mange strengene som argumentene til innsatsen () -funksjonen. Deretter spesifiserer vi verdien av nøkkelen ved å bruke nøkkelordet "-tasten". Find () -metoden brukes i neste trinn. Denne funksjonen brukes for å finne den nødvendige strengen til settet.
Vi bruker enden () -metoden for å avslutte strengene. Denne funksjonen returnerer iteratoren når nøkkelen ikke eksisterer i settet. Kommandoen “cout” blir brukt for å skrive ut uttalelsen. Deretter initialiserer vi igjen en verdi for "nøkkel" -attributtet. Vi finner verdien av en attributt i strengen ved å bruke Find () -funksjonen og avslutte strengen ved hjelp av enden () -metoden. Vi bruker "cout" -uttalelsen for å vise resultatet. Vi itererer over hele settet og skriver ut innholdet i settet ved å bruke "cout" -uttalelsen. Vi bruker den uordnede settmetoden så vel som å erklære iteratoren som "jeg". "For" -sløyfen er ansatt.
Først initialiserer vi en variabel og bruker deretter BEGIN () -funksjonen for å starte den spesifiserte strengen. Videre definerer vi løkkenes tilstand. Slutt () -funksjonen kalles. Verdien av iteratoren økes med 1. Til slutt brukes "cout" -uttalelsen for å vise verdien av iteratoren.
Eksempel 2:
I dette tilfellet vil vi utføre en kode der vi erklærer en liste over forskjellige verdier, og så finner vi alle duplikatene fra den listen ved bruk av den uordnede settfunksjonen.
#inkludereHer inkluderer vi biblioteket. I neste trinn bruker vi standard navneområde som STD. Vi bruker metoden Print () for å vise replikatet i den definerte matrisen ved bruk av et uordnet sett. Vi gir en matrise og en variabel for å forvrenge heltallet som argumenter for printduplicates () -metoden.
Nå erklærer vi de uordnede settene for å skaffe og lagre duplikatene. Den uordnede settfunksjonen brukes. Vi passerer heltallet som parameter. Deretter bruker vi en annen uordnet settfunksjon for å finne duplikatelementene. Her bruker vi “for” -sløyfen. Vi erklærer en variabel av "for" -sløyfen. Deretter spesifiserer vi tilstanden. Deretter øker vi verdien “j”. Vi kaller Find () -funksjonen for å finne det definerte elementet i matrisen. Vi passerer det spesifikke elementet som argumentet for denne funksjonen. Hvis det nødvendige elementet allerede er til stede i matrisen, setter vi inn det duplikatsettet.
Vi viser de dupliserte verdiene til matrisen ved å bruke "cout" -uttalelsen. Vi erklærer variabelen “It” for iteratoren for det uordnede settet. "For" -sløyfen påføres. Deretter brukes BEGIN () og END () metoder i "for" -sløyfen. Etter det kaller vi Main () -funksjonen. Vi initialiserer en variabel “a”. Deretter definerer vi elementene for matrisen, og denne matrisen lagres i en variabel “A”. Vi finner størrelsen på den nødvendige matrisen ved å bruke størrelse av () -metoden. Vi passerer matrisen som parameter for denne funksjonen.
Vi deler den resulterende verdien med heltallets størrelse. Verdien vi får etter deling lagres i en variabel “B”. Vi viser duplikatverdiene til matrisen ved hjelp av printDuplicate () -metoden. Til slutt bruker vi kommandoen “Return 0”.
Eksempel 3:
Et dataelement kan legges til den uordnede settbeholderen ved hjelp av den innebygde C ++ standardmalbibliotekfunksjonen - Instert () -funksjonen. Hvert element i et uordnet sett har en bestemt verdi og legges bare til hvis det ikke er tilgjengelig i settet. Siden beholderen bruker flere hashingmetoder, utføres innsatsen automatisk på det punktet som optimalt oppfyller kravet. Som et resultat forbedres beholderens størrelse betydelig av antall hentet varer.
Parametere for innsats () -metode:
Metoden returnerer et par, og har paret :: Først konfigurert til en iterator som refererer til det nye oppdaterte elementet eller den tilsvarende komponenten som allerede er til stede i settet. Hvis et nytt dataelement blir lagt til, blir paret :: andre komponent i paret justert til True; Ellers er det spesifisert som usant hvis et identisk element allerede er til stede.
Følgende program viser den nevnte funksjonen:
#inkludereFørst av alt integrerer vi de nødvendige overskriftsfilene. Det er ansvarlig for inngangs- og utgangsfunksjonalitetene. Overskriftsfilen inneholder erklæringen av strengene. Den tredje har alle uordnede settene. Vi bruker standard navneområde som STD. Deretter starter vi kodingen inne i kroppen til Main () -funksjonen etter å ha ringt Main () -funksjonen. Vi bruker det uordnede settet med strenger.
Her definerer vi elementene i settet mitt. Vi spesifiserer de to dagene i uken. Nå indikerer vi verdien av strengen som vi ønsker å bli satt inn i det nødvendige settet. Vi setter inn den strengen ved å bruke Sett inn () -metoden. Uttalelsen om "cout" er brukt for å vise teksten "settet med hverdager er". Vi bruker "cout" -uttalelsen igjen før vi legger inn "return 0" -kommandoen. Denne "cout" uttalelsen skriver ut alle ukedagens navn.
Konklusjon
Bruken av C ++ uordnede settfunksjoner dekkes i denne artikkelen. Vi implementerte de flere kodene på Devc ++ -programvare der vi benyttet mange funksjoner relatert til de uordnede settene. Uordnede sett er datastrukturer som kan inneholde forskjellige komponenter i hvilken som helst rekkefølge og gi effektiv tilgang til spesifikke elementer basert på deres verdi. I første omgang benyttet vi oss av de flere uordnede settfunksjonene for å undersøke hvordan koden fungerer. Ved hjelp av Find () -metoden identifiserte vi et bestemt element i settet. Ved hjelp av slutt () -funksjonen avsluttet vi det uordnede settet. I den andre illustrasjonen konstruerte vi en matrise som inneholder forskjellige heltall. Både gjentatte og ikke-gjentatte verdier er inkludert i matrisen. For å finne duplikatverdiene i den spesifiserte matrisen, brukte vi Find () -metoden. Insert () -metoden ble brukt i det siste eksemplet for å tilføre en verdi til det nødvendige uordnede settet.