Eksempler på C++ Union

Eksempler Pa C Union



En union er en spesiell klassetype i C++ som muliggjør lagring av forskjellige datatyper på en delt minneplassering. I motsetning til strukturer, hvor hver del vanligvis får sitt minne, lar fagforeninger de forskjellige dataene bruke samme minneplassering. Denne egenskapen gjør fagforeninger spesielt nyttige når minneeffektivitet er en prioritet, og bare ett av medlemmene trenger å være tilgjengelig om gangen. I denne artikkelen vil vi fordype oss i konseptet med fagforeninger i C++ og utforske flere eksempler som viser deres nytte i ulike scenarier.

Syntaks:

En union er en type som er definert av brukeren, som muliggjør lagring av forskjellige datatyper innenfor en delt minneplassering. Å bruke en union følger en syntaks som er identisk med en struktur.







Den grunnleggende syntaksen er som følger:



fagforening UnionName {

// Medlemserklæringer

DataType1 medlem1 ;

DataType2-medlem2 ;

//...

} ;

Her fungerer 'UnionName' som identifikator for unionen som gir et unikt navn for å referere til denne spesifikke brukerdefinerte typen. Fagforeningsmedlemmenes datatyper er betegnet som 'DataType1', 'DataType2' og så videre. Disse datatypene angir de varierte typene informasjon som kan lagres i fagforeningen. Hvert medlem i fagforeningen, utpekt med navn som «medlem1», «medlem2» osv., representerer en distinkt stykke data.



Vi forstår nå den grunnleggende syntaksen. La oss nå bruke noen få tilfeller for å bedre forstå dette.





Eksempel 1: Grunnleggende unionsbruk

Det første eksemplet illustrerer den grunnleggende bruken av fagforeninger i C++, og viser hvordan de muliggjør deling av minneplass mellom forskjellige datatyper innenfor en enkelt struktur.

Her er et eksempel:



#include

bruker navneområde std ;

fagforening ArrayUnion {

int intArray [ 5 ] ;

flyte floatArray [ 5 ] ;

} ;

int hoved- ( ) {

ArrayUnion arrayUnion ;

til ( int Jeg = 0 ; Jeg < 5 ; ++ Jeg ) {

arrayUnion. intArray [ Jeg ] = Jeg * 2 ;

}

cout << 'Int Array:' ;

til ( int Jeg = 0 ; Jeg < 5 ; ++ Jeg ) {

cout << ' ' << arrayUnion. intArray [ Jeg ] ;

}

cout << endl ;

til ( int Jeg = 0 ; Jeg < 5 ; ++ Jeg ) {

arrayUnion. floatArray [ Jeg ] = Jeg * 1,5f ;

}

cout << 'Float Array:' ;

til ( int Jeg = 0 ; Jeg < 5 ; ++ Jeg ) {

cout << ' ' << arrayUnion. floatArray [ Jeg ] ;

}

cout << endl ;

komme tilbake 0 ;

}

I denne C++-kodebiten bruker vi en union kalt 'MyUnion' som inneholder tre forskjellige datamedlemmer: et heltall (intValue), et flyttallsnummer (floatValue) og et tegn (charValue). Bare ett av disse medlemmene kan være aktivt på et gitt tidspunkt på grunn av en fagforenings evne til å dele en minneplass.

Innenfor «hoved»-funksjonen erklærer vi en forekomst av fagforeningen som er «myUnion». Først setter vi heltallsmedlemmets verdi til 42 og bruker 'cout' for å skrive det ut. Deretter tildeler vi flyttallverdien på 3,14 til 'floatValue'-medlemmet og skriver det ut. Til slutt tildeler vi tegnet 'A' til 'charValue'-medlemmet og skriver det ut. Det er viktig å huske at siden alle fagforeningsmedlemmer deler samme minnested, kan endring av ett medlem ha innvirkning på verdiene til andre medlemmer. Koden avsluttes med å returnere 0 som betyr en vellykket kjøring.

Eksempel 2: Union med struktur

En struct er en type data i C++ som brukerne kan lage for å kombinere variablene av ulike typer under ett enhetlig navn. Å kombinere en union med en struct kan være nyttig når vi ønsker å lage en datastruktur som kan inneholde ulike typer data, og hver type er knyttet til et spesifikt felt. Denne sammenkoblingen muliggjør utvikling av komplekse datastrukturer med forskjellige representasjoner.

Her er et eksempel på bruk av en union i en struktur i C++:

#include

bruker navneområde std ;

struktur Punkt {

int s1 ;

int s2 ;

} ;

fagforening Form {

int sider ;

flyte radius ;

Punkt sentrum ;

} ;

int hoved- ( ) {

Form form ;

form. sider = 5 ;
cout << 'Sider: ' << form. sider << endl ;

form. radius = 6.0f ;
cout << 'Radius:' << form. radius << endl ;

form. senter = { 10 , tjue } ;
cout << 'Senter: (' << form. senter . s1 << ', ' << form. senter . s2 << ')' << endl ;

komme tilbake 0 ;

}

I denne koden definerer vi et C++-program som bruker en union og en struktur for å representere ulike aspekter av en geometrisk form. Først erklærer vi en 'punkt'-struktur som består av to heltallsmedlemmer, 's1' og 's2', som representerer koordinatene til et punkt i et 2D-rom. Deretter definerer vi en 'union' kalt 'Shape' som består av tre medlemmer: et 'sides' heltall, en 'radius' flytepunkt og en 'Point' struktur kalt 'center'. Går vi videre til 'hoved'-funksjonen, instansierer vi et 'Shape'-objekt kalt 'shape'. Vi viser deretter allsidigheten til forbundet ved å tildele verdier til de forskjellige medlemmene. Til å begynne med setter vi antall sider til 5 og skriver ut resultatet. Deretter tildeler vi en radius på 6,0 til formen og sender ut radiusen. Til slutt tildeler vi et senterpunkt med koordinater (10, 20) til formen og skriver ut senterets koordinater.

Eksempel 3: Union med Enum

I C++ tjener oppregninger, ofte referert til som oppregninger, formålet med å definere en samling av navngitte integralkonstanter. Å kombinere enums med fagforeninger kan være nyttig i scenarier der vi ønsker å representere en variabel som kan ta på forskjellige typer, hver assosiert med en spesifikk enum-verdi.

Her er et eksempel:

#include

bruker navneområde std ;

enum Data-type {

HELTAL ,

FLYTE ,

CHAR

} ;

fagforening Dataverdi {

int intVerdi ;

flyte flyteverdi ;

røye charVerdi ;

} ;

struktur Data {

DataType type ;

DataValue-verdi ;

} ;

int hoved- ( )

{

Datadata 1 , data2 , data3 ;

data1. type = HELTAL ;
data1. verdi . intVerdi = 42 ;

data2. type = FLYTE ;
data2. verdi . flyteverdi = 3.14f ;

data3. type = CHAR ;
data3. verdi . charVerdi = 'EN' ;

cout << 'Data 1: ' << data1. verdi . intVerdi << endl ;
cout << 'Data 2: ' << data2. verdi . flyteverdi << endl ;
cout << 'Data 3: ' << data3. verdi . charVerdi << endl ;

komme tilbake 0 ;

}

For dette eksempelet har vi et program som bruker oppsummeringer, fagforeninger og strukturer for å lage en fleksibel datastruktur som er i stand til å inneholde forskjellige typer verdier. 'DataType'-enumet er definert til å representere tre grunnleggende datatyper: INTEGER, FLOAT og CHAR. Enumet forbedrer kodens lesbarhet og vedlikeholdbarhet ved å tilby et sett med navngitte integralkonstanter.

Deretter lager vi en forening kalt 'DataValue' med tre medlemmer: 'charValue' av typen char, 'floatValue' av typen float og 'intValue' av typen int. Med en fagforening deler disse medlemmene en felles minneplassering som gjør at fagforeningen om hverandre kan imøtekomme verdiene til forskjellige typer. 'Data'-strukturen opprettes deretter som består av to medlemmer: en 'DataType'-teller kalt 'type' og en 'DataValue'-union kalt 'verdi'. Denne strukturen lar oss assosiere en datatype med dens tilsvarende verdi, og gir en strukturert representasjon.

I 'hoved'-funksjonen instansierer vi tre forekomster av 'Data'-strukturen: 'data1', 'data2' og 'data3'. Vi tildeler verdiene til disse forekomstene ved å spesifisere datatypen og angi riktig verdi innenfor fagforeningen. For eksempel er 'data1' tilordnet en INTEGER-type med en verdi på 42. Til slutt bruker vi 'cout'-setningene til å skrive ut verdiene som er lagret i hver 'Data'-forekomst. Programmet sender ut heltallsverdien til 'data1', flyttallverdien til 'data2' og tegnverdien til 'data3'.

Dette eksemplet illustrerer hvordan kombinasjonen av enums, fagforeninger og strukturer kan brukes for å lage en allsidig og typesikker datarepresentasjon i C++.

Konklusjon

C++ fagforeninger gir en kraftig og fleksibel mekanisme for å administrere de forskjellige datatypene innenfor en enkelt minneplass. Forekomstene som er illustrert i denne artikkelen fremhever tilpasningsevnen og effektiviteten til fagforeninger når det gjelder å håndtere en rekke scenarier. Fra de grunnleggende bruksområdene som demonstrerer utskiftbarheten av datatyper til mer komplekse applikasjoner som involverer strukturer og oppsummeringer, understreker disse eksemplene effektiviteten og tilpasningsevnen fagforeninger bringer til C++-programmering.