Eksempler på C++ Union

Eksempler Pa C Union



En union er en speciel klassetype i C++, der muliggør lagring af forskellige datatyper på en delt hukommelsesplacering. I modsætning til strukturer, hvor hver del normalt får sin hukommelse, lader fagforeninger de forskellige stykker data bruge den samme hukommelsesplacering. Denne egenskab gør fagforeninger særligt nyttige, når hukommelseseffektivitet er en prioritet, og kun et af medlemmerne skal tilgås ad gangen. I denne artikel vil vi dykke ned i begrebet fagforeninger i C++ og udforske flere eksempler, der viser deres nytte i forskellige scenarier.

Syntaks:

En union er en type, der er defineret af brugeren, hvilket muliggør lagring af forskellige datatyper inden for en delt hukommelsesplacering. Brug af en union følger en syntaks, der er identisk med en struktur.







Den grundlæggende syntaks er som følger:



Union Fagforeningsnavn {

// Medlemserklæringer

DataType1 medlem1 ;

DataType2 medlem2 ;

//...

} ;

Her fungerer 'UnionName' som identifikator for foreningen, som giver et unikt navn til at referere til denne specifikke brugerdefinerede type. Fagforeningsmedlemmernes datatyper er betegnet som 'DataType1', 'DataType2' og så videre. Disse datatyper angiver de forskellige typer af information, der kan lagres i fagforeningen. Hvert medlem i fagforeningen, der er udpeget med navne som 'medlem1', 'medlem2' osv., repræsenterer et særskilt stykke data.



Vi forstår nu den grundlæggende syntaks. Lad os nu bruge et par tilfælde til bedre at forstå dette.





Eksempel 1: Grundlæggende unionsbrug

Det første eksempel illustrerer den grundlæggende brug af fagforeninger i C++, og viser, hvordan de muliggør deling af hukommelsesplads mellem forskellige datatyper inden for en enkelt struktur.

Her er et eksempel:



#include

bruger navneområde std ;

Union ArrayUnion {

int intArray [ 5 ] ;

flyde floatArray [ 5 ] ;

} ;

int vigtigste ( ) {

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 ;

Vend tilbage 0 ;

}

I dette C++-kodestykke bruger vi en forening ved navn 'MyUnion', der inkorporerer tre forskellige datamedlemmer: et heltal (intValue), et flydende kommatal (floatValue) og et tegn (charValue). Kun ét af disse medlemmer må være aktivt på et givet tidspunkt på grund af en fagforenings mulighed for at dele et hukommelsesrum.

Inden for 'hoved'-funktionen erklærer vi en forekomst af fagforeningen, som er 'myUnion'. Først sætter vi heltalsmedlemmets værdi til 42 og bruger 'cout' til at udskrive det. Efterfølgende tildeler vi floating-point-værdien 3,14 til 'floatValue'-medlemmet og udskriver det. Til sidst tildeler vi tegnet 'A' til 'charValue'-medlemmet og udskriver det. Det er vigtigt at huske, at da alle fagforeningsmedlemmer deler den samme hukommelsesplacering, kan ændring af et medlem have indflydelse på andre medlemmers værdier. Koden afsluttes med at returnere 0, hvilket betyder en vellykket eksekvering.

Eksempel 2: Union med struktur

En struct er en type data i C++, som brugerne kan oprette for at kombinere variablerne af forskellige typer under ét samlet navn. At kombinere en union med en struct kan være nyttig, når vi ønsker at skabe en datastruktur, der kan indeholde forskellige typer data, og hver type er knyttet til et specifikt felt. Denne parring giver mulighed for udvikling af komplekse datastrukturer med forskellige repræsentationer.

Her er et eksempel på brug af en union i en struct i C++:

#include

bruger navneområde std ;

struktur Punkt {

int s1 ;

int s2 ;

} ;

Union Form {

int sider ;

flyde radius ;

Punkt centrum ;

} ;

int vigtigste ( ) {

Form form ;

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

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

form. centrum = { 10 , tyve } ;
cout << 'Center: (' << form. centrum . s1 << ', ' << form. centrum . s2 << ')' << endl ;

Vend tilbage 0 ;

}

I denne kode definerer vi et C++-program, der bruger en union og en struktur til at repræsentere forskellige aspekter af en geometrisk form. Først erklærer vi en 'Punkt'-struktur, som består af to heltalsmedlemmer, 's1' og 's2', der repræsenterer koordinaterne for et punkt i et 2D-rum. Derefter definerer vi en 'union' ved navn 'Shape', som består af tre medlemmer: et 'sides' heltal, et 'radius' flydende komma og en 'Point' struktur med navnet 'center'. Går vi videre til 'hoved'-funktionen, instansierer vi et 'Shape'-objekt ved navn 'shape'. Derefter demonstrerer vi fagforeningens alsidighed ved at tildele værdier til dens forskellige medlemmer. I første omgang sætter vi antallet af sider til 5 og udskriver resultatet. Dernæst tildeler vi en radius på 6,0 til formen og udskriver radiussen. Til sidst tildeler vi et midtpunkt med koordinater (10, 20) til formen og udskriver midtens koordinater.

Eksempel 3: Union med Enum

I C++ tjener optællinger, almindeligvis omtalt som optællinger, det formål at definere en samling af navngivne integralkonstanter. At kombinere enums med fagforeninger kan være nyttigt i scenarier, hvor vi ønsker at repræsentere en variabel, der kan antage forskellige typer, som hver især er forbundet med en specifik enum-værdi.

Her er et eksempel:

#include

bruger navneområde std ;

enum Datatype {

HELTAL ,

FLYDE ,

CHAR

} ;

Union DataVærdi {

int intVærdi ;

flyde flydeværdi ;

char charVærdi ;

} ;

struktur Data {

DataType type ;

DataValue værdi ;

} ;

int vigtigste ( )

{

Datadata 1 , data2 , data3 ;

data1. type = HELTAL ;
data1. værdi . intVærdi = 42 ;

data2. type = FLYDE ;
data2. værdi . flydeværdi = 3.14f ;

data3. type = CHAR ;
data3. værdi . charVærdi = 'EN' ;

cout << 'Data 1: ' << data1. værdi . intVærdi << endl ;
cout << 'Data 2: ' << data2. værdi . flydeværdi << endl ;
cout << 'Data 3: ' << data3. værdi . charVærdi << endl ;

Vend tilbage 0 ;

}

Til dette eksempel har vi et program, der bruger enums, fagforeninger og strukturer til at skabe en fleksibel datastruktur, der er i stand til at indeholde forskellige typer værdier. 'DataType'-enummet er defineret til at repræsentere tre grundlæggende datatyper: INTEGER, FLOAT og CHAR. Enumet forbedrer kodens læsbarhed og vedligeholdelsesevne ved at tilbyde et sæt navngivne integralkonstanter.

Derefter laver vi en forening kaldet 'DataValue' med tre medlemmer: 'charValue' af typen char, 'floatValue' af typen float og 'intValue' af typen int. Med en fagforening deler disse medlemmer en fælles hukommelsesplacering, som gør det muligt for fagforeningen i flæng at rumme værdierne af forskellige typer. Derefter oprettes 'Data'-strukturen, som består af to medlemmer: en 'DataType'-tæller med navnet 'type' og en 'DataValue'-union med navnet 'værdi'. Denne struktur giver os mulighed for at associere en datatype med dens tilsvarende værdi, hvilket giver en struktureret repræsentation.

I 'hoved'-funktionen instansierer vi tre forekomster af 'Data'-strukturen: 'data1', 'data2' og 'data3'. Vi tildeler værdierne til disse forekomster ved at specificere datatypen og indstille den passende værdi inden for fagforeningen. For eksempel er 'data1' tildelt en INTEGER-type med en værdi på 42. Til sidst bruger vi 'cout'-sætningerne til at udskrive de værdier, der er gemt i hver 'Data'-forekomst. Programmet udsender heltalsværdien af ​​'data1', flydende-kommaværdien af ​​'data2' og tegnværdien af ​​'data3'.

Dette eksempel illustrerer, hvordan kombinationen af ​​enums, fagforeninger og strukturer kan bruges til at skabe en alsidig og typesikker datarepræsentation i C++.

Konklusion

C++ fagforeninger giver en kraftfuld og fleksibel mekanisme til styring af de forskellige datatyper inden for et enkelt hukommelsesrum. De tilfælde, der er illustreret i denne artikel, fremhæver fagforeningernes tilpasningsevne og effektivitet i forhold til en række scenarier. Fra de grundlæggende anvendelser, der demonstrerer udskifteligheden af ​​datatyper til mere komplekse applikationer, der involverer strukturer og enums, understreger disse eksempler effektiviteten og tilpasningsevnen, som fagforeninger bringer til C++-programmering.