Príklady únie C++

Priklady Unie C



Union je špeciálny typ triedy v C++, ktorý umožňuje ukladanie rôznych typov údajov v zdieľanej pamäti. Na rozdiel od štruktúr, kde každá časť zvyčajne dostane svoju pamäť, spojenia umožňujú rôznym častiam údajov používať rovnaké pamäťové miesto. Vďaka tejto vlastnosti sú zväzky obzvlášť užitočné, keď je prioritou efektívnosť pamäte a súčasne je potrebné pristupovať iba k jednému z členov. V tomto článku sa ponoríme do konceptu odborov v C++ a preskúmame viaceré príklady, ktoré demonštrujú ich užitočnosť v rôznych scenároch.

Syntax:

Spojenie je typ definovaný používateľom, ktorý umožňuje ukladanie rôznych typov údajov v rámci zdieľanej pamäte. Použitie spojenia sa riadi syntaxou, ktorá je identická so štruktúrou.







Základná syntax je nasledovná:



únie UnionName {

// Vyhlásenia členov

DataType1 člen1 ;

DataType2 člen2 ;

//...

} ;

„UnionName“ tu slúži ako identifikátor únie, ktorý poskytuje jedinečný názov na odkaz na tento špecifický typ definovaný používateľom. Dátové typy členov únie sú označené ako „DataType1“, „DataType2“ atď. Tieto dátové typy označujú rôzne typy informácií, ktoré môžu byť uložené v rámci únie. Každý člen v rámci únie, označený menami ako „člen1“, „člen2“ atď., predstavuje odlišný údaj.



Teraz rozumieme základnej syntaxi. Použime teraz niekoľko príkladov, aby sme to lepšie pochopili.





Príklad 1: Použitie základného zväzku

Prvý príklad ilustruje základné využitie zväzkov v C++ a ukazuje, ako umožňujú zdieľanie pamäťového priestoru medzi rôznymi typmi údajov v rámci jednej štruktúry.

Tu je príklad:



#include

pomocou menného priestoru std ;

únie ArrayUnion {

int intArray [ 5 ] ;

plavák floatArray [ 5 ] ;

} ;

int Hlavná ( ) {

ArrayUnion arrayUnion ;

pre ( int i = 0 ; i < 5 ; ++ i ) {

arrayUnion. intArray [ i ] = i * 2 ;

}

cout << 'Int Array:' ;

pre ( int i = 0 ; i < 5 ; ++ i ) {

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

}

cout << endl ;

pre ( int i = 0 ; i < 5 ; ++ i ) {

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

}

cout << 'Plávacie pole:' ;

pre ( int i = 0 ; i < 5 ; ++ i ) {

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

}

cout << endl ;

vrátiť 0 ;

}

V tomto úryvku kódu C++ používame spojenie s názvom „MyUnion“, ktoré obsahuje tri rôzne dátové členy: celé číslo (intValue), číslo s pohyblivou rádovou čiarkou (floatValue) a znak (charValue). Len jeden z týchto členov môže byť aktívny v ktoromkoľvek danom bode kvôli schopnosti odborov zdieľať pamäťový priestor.

V rámci funkcie „main“ deklarujeme inštanciu spojenia, ktorá je „myUnion“. Najprv nastavíme celočíselnú hodnotu člena na 42 a pomocou „cout“ ju vytlačíme. Následne členu „floatValue“ priradíme plávajúcu desatinnú čiarku 3,14 a vytlačíme ho. Nakoniec priradíme znak „A“ členu „charValue“ a vytlačíme ho. Je dôležité si uvedomiť, že keďže všetci členovia odborov zdieľajú rovnaké pamäťové miesto, zmena jedného člena môže mať vplyv na hodnoty ostatných členov. Kód končí návratom 0, čo znamená úspešné vykonanie.

Príklad 2: Spojenie so štruktúrou

Štruktúra je typ údajov v C++, ktorý môžu používatelia vytvárať na kombinovanie premenných rôznych typov pod jedným jednotným názvom. Kombinácia spojenia so štruktúrou môže byť užitočná, keď chceme vytvoriť dátovú štruktúru, ktorá môže obsahovať rôzne typy údajov a každý typ je spojený s konkrétnym poľom. Toto párovanie umožňuje vývoj zložitých dátových štruktúr s rôznymi reprezentáciami.

Tu je príklad použitia spojenia v rámci štruktúry v C++:

#include

pomocou menného priestoru std ;

štrukturovať Bod {

int s1 ;

int s2 ;

} ;

únie Tvar {

int strany ;

plavák polomer ;

Bodový stred ;

} ;

int Hlavná ( ) {

Tvar tvaru ;

tvar. strany = 5 ;
cout << 'Strany:' << tvar. strany << endl ;

tvar. polomer = 6.0f ;
cout << 'Polomer: ' << tvar. polomer << endl ;

tvar. stred = { 10 , dvadsať } ;
cout << 'Centrum:' << tvar. stred . s1 << ',' << tvar. stred . s2 << ')' << endl ;

vrátiť 0 ;

}

V tomto kóde definujeme program C++, ktorý používa spojenie a štruktúru na reprezentáciu rôznych aspektov geometrického tvaru. Najprv deklarujeme štruktúru „Point“, ktorá pozostáva z dvoch celočíselných členov „s1“ a „s2“, ktoré predstavujú súradnice bodu v 2D priestore. Potom definujeme „úniu“ s názvom „Tvar“, ktorá pozostáva z troch členov: celého čísla „strany“, „polomeru“ s pohyblivou rádovou čiarkou a štruktúry „Point“ s názvom „stred“. Keď prejdeme k funkcii „hlavná“, vytvoríme inštanciu objektu „Shape“ s názvom „shape“. Všestrannosť odboru potom demonštrujeme priradením hodnôt jeho rôznym členom. Spočiatku nastavíme počet strán na 5 a vytlačíme výsledok. Ďalej tvaru priradíme polomer 6,0 a vydáme polomer. Nakoniec k tvaru priradíme stredový bod so súradnicami (10, 20) a vytlačíme súradnice stredu.

Príklad 3: Zjednotenie s Enum

V C++ slúžia enumerácie, bežne označované ako enumy, na účely definovania kolekcie pomenovaných integrálnych konštánt. Kombinácia enumov so zväzkami môže byť užitočná v scenároch, kde chceme reprezentovať premennú, ktorá môže mať rôzne typy, pričom každý je spojený s konkrétnou hodnotou enum.

Tu je príklad:

#include

pomocou menného priestoru std ;

enum Dátový typ {

INTEGER ,

PLAVÁK ,

CHAR

} ;

únie DataValue {

int intValue ;

plavák floatValue ;

char charValue ;

} ;

štrukturovať Údaje {

Typ údajov ;

Hodnota DataValue ;

} ;

int Hlavná ( )

{

Dátové údaje1 , údaje2 , údaje3 ;

údaje1. typu = INTEGER ;
údaje1. hodnotu . intValue = 42 ;

údaje2. typu = PLAVÁK ;
údaje2. hodnotu . floatValue = 3.14f ;

údaje3. typu = CHAR ;
údaje3. hodnotu . charValue = 'A' ;

cout << 'Údaje 1: ' << údaje1. hodnotu . intValue << endl ;
cout << 'Údaje 2: ' << údaje2. hodnotu . floatValue << endl ;
cout << 'Údaje 3: ' << údaje3. hodnotu . charValue << endl ;

vrátiť 0 ;

}

V tomto príklade máme program, ktorý využíva enumy, zväzky a štruktúry na vytvorenie flexibilnej dátovej štruktúry, ktorá je schopná uchovávať rôzne typy hodnôt. Výčet „DataType“ je definovaný tak, aby predstavoval tri základné typy údajov: INTEGER, FLOAT a CHAR. Enum zlepšuje čitateľnosť a udržiavateľnosť kódu tým, že ponúka sadu pomenovaných integrálnych konštánt.

Potom vytvoríme spojenie s názvom „DataValue“ s tromi členmi: „charValue“ typu char, „floatValue“ typu float a „intValue“ typu int. V spojení majú títo členovia spoločné pamäťové miesto, ktoré umožňuje zjednoteniu zameniteľne prispôsobiť hodnoty rôznych typov. Potom sa vytvorí štruktúra „Data“, ktorá pozostáva z dvoch členov: enumerátor „DataType“ s názvom „type“ a spojenie „DataValue“ s názvom „value“. Táto štruktúra nám umožňuje priradiť typ údajov k jeho zodpovedajúcej hodnote, čím poskytuje štruktúrovanú reprezentáciu.

Vo funkcii „main“ vytvárame inštanciu troch inštancií štruktúry „Data“: „data1“, „data2“ a „data3“. Hodnoty týmto inštanciám priradíme zadaním typu údajov a nastavením vhodnej hodnoty v rámci únie. Napríklad „data1“ je priradený typ INTEGER s hodnotou 42. Nakoniec použijeme príkazy „cout“ na vytlačenie hodnôt, ktoré sú uložené v každej inštancii „Data“. Program vypíše celočíselnú hodnotu „údaje1“, hodnotu s pohyblivou rádovou čiarkou „údaje2“ a znakovú hodnotu „údaje3“.

Tento príklad ilustruje, ako možno použiť kombináciu enumov, spojení a štruktúr na vytvorenie všestrannej a typovo bezpečnej reprezentácie údajov v C++.

Záver

Spojenia C++ poskytujú výkonný a flexibilný mechanizmus na správu rôznych typov údajov v rámci jedného pamäťového priestoru. Príklady, ktoré sú uvedené v tomto článku, zdôrazňujú prispôsobivosť a efektívnosť odborov pri riešení rôznych scenárov. Od základných použití, ktoré demonštrujú zameniteľnosť dátových typov až po komplexnejšie aplikácie zahŕňajúce štruktúry a zoznamy, tieto príklady podčiarkujú efektivitu a prispôsobivosť, ktorú odbory prinášajú do programovania v C++.