Příklady unie C++

Priklady Unie C



Sjednocení je speciální typ třídy v C++, který umožňuje ukládání různých typů dat do sdílené paměti. Na rozdíl od struktur, kde každá část obvykle získává svou paměť, svazky umožňují různým datům používat stejné paměťové místo. Díky této vlastnosti jsou sjednocení zvláště užitečné, když je prioritou efektivita paměti a v daný okamžik je třeba přistupovat pouze k jednomu z členů. V tomto článku se ponoříme do konceptu sjednocení v C++ a prozkoumáme několik příkladů, které demonstrují jejich užitečnost v různých scénářích.

Syntax:

Sjednocení je typ definovaný uživatelem, který umožňuje ukládání různých typů dat v rámci sdílené paměti. Použití sjednocení se řídí syntaxí, která je identická se strukturou.







Základní syntaxe je následující:



svaz UnionName {

// Prohlášení členů

DataType1 člen1 ;

DataType2 člen2 ;

//...

} ;

Zde „UnionName“ slouží jako identifikátor pro sjednocení, který poskytuje jedinečný název odkazující na tento konkrétní uživatelsky definovaný typ. Datové typy členů odboru jsou označeny jako „DataType1“, „DataType2“ a tak dále. Tyto datové typy označují různé typy informací, které mohou být uloženy v rámci unie. Každý člen v rámci unie, označený jmény jako „člen1“, „člen2“ atd., představuje odlišnou část dat.



Nyní rozumíme základní syntaxi. Použijme nyní několik příkladů, abychom to lépe pochopili.





Příklad 1: Základní sjednocení

První příklad ilustruje základní využití sjednocení v C++ a ukazuje, jak umožňují sdílení paměťového prostoru mezi různými datovými typy v rámci jediné struktury.

Zde je příklad:



#include

pomocí jmenného prostoru std ;

svaz ArrayUnion {

int intArray [ 5 ] ;

plovák floatArray [ 5 ] ;

} ;

int hlavní ( ) {

ArrayUnion arrayUnion ;

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

arrayUnion. intArray [ i ] = i * 2 ;

}

cout << 'Int Array:' ;

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

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

}

cout << endl ;

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

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

}

cout << 'Plovákové pole:' ;

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

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

}

cout << endl ;

vrátit se 0 ;

}

V tomto fragmentu kódu C++ používáme sjednocení s názvem „MyUnion“, které zahrnuje tři různé datové členy: celé číslo (intValue), číslo s plovoucí desetinnou čárkou (floatValue) a znak (charValue). Pouze jeden z těchto členů může být v daném okamžiku aktivní kvůli schopnosti odborů sdílet paměťový prostor.

V rámci funkce „main“ deklarujeme instanci sjednocení, která je „myUnion“. Nejprve nastavíme celočíselnou hodnotu člena na 42 a pomocí „cout“ ji vytiskneme. Následně členu „floatValue“ přiřadíme hodnotu s plovoucí desetinnou čárkou 3,14 a vytiskneme jej. Nakonec přiřadíme znak „A“ členu „charValue“ a vytiskneme jej. Je důležité si uvědomit, že jelikož všichni členové odborů sdílejí stejné paměťové místo, změna jednoho člena může mít dopad na hodnoty ostatních členů. Kód končí návratem 0, což znamená úspěšné provedení.

Příklad 2: Spojení se strukturou

Struktura je typ dat v C++, který mohou uživatelé vytvářet pro kombinování proměnných různých typů pod jedním jednotným názvem. Kombinace sjednocení se strukturou může být užitečná, když chceme vytvořit datovou strukturu, která pojme různé typy dat a každý typ je spojen s určitým polem. Toto párování umožňuje vývoj komplexních datových struktur s různými reprezentacemi.

Zde je příklad použití sjednocení ve struktuře v C++:

#include

pomocí jmenného prostoru std ;

strukturovat Směřovat {

int s1 ;

int s2 ;

} ;

svaz Tvar {

int strany ;

plovák poloměr ;

Bodový střed ;

} ;

int hlavní ( ) {

Tvar tvaru ;

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

tvar. poloměr = 6,0f ;
cout << 'Poloměr:' << tvar. poloměr << endl ;

tvar. centrum = { 10 , dvacet } ;
cout << 'Střed: (' << tvar. centrum . s1 << ',' << tvar. centrum . s2 << ')' << endl ;

vrátit se 0 ;

}

V tomto kódu definujeme program C++, který používá sjednocení a strukturu k reprezentaci různých aspektů geometrického tvaru. Nejprve deklarujeme strukturu „Point“, která se skládá ze dvou celočíselných členů „s1“ a „s2“, které představují souřadnice bodu ve 2D prostoru. Poté definujeme „spojení“ s názvem „Tvar“, které se skládá ze tří členů: celého čísla „stran“, „poloměru“ s plovoucí desetinnou čárkou a struktury „Point“ s názvem „střed“. Když přejdeme k funkci „hlavní“, vytvoříme instanci objektu „Shape“ s názvem „shape“. Všestrannost odboru pak demonstrujeme tím, že jeho různým členům přiřadíme hodnoty. Zpočátku nastavíme počet stran na 5 a vytiskneme výsledek. Dále tvaru přiřadíme poloměr 6,0 a vydáme poloměr. Nakonec tvaru přiřadíme střed se souřadnicemi (10, 20) a vytiskneme souřadnice středu.

Příklad 3: Sjednocení s Enum

V C++ slouží výčty, běžně označované jako výčty, za účelem definování kolekce pojmenovaných integrálních konstant. Kombinace výčtů se sjednoceními může být užitečná ve scénářích, kde chceme reprezentovat proměnnou, která může nabývat různých typů, z nichž každá je spojena s konkrétní hodnotou výčtu.

Zde je příklad:

#include

pomocí jmenného prostoru std ;

enum Datový typ {

CELÉ ČÍSLO ,

PLOVÁK ,

CHAR

} ;

svaz DataValue {

int intValue ;

plovák floatValue ;

char charValue ;

} ;

strukturovat Data {

Typ datového typu ;

Hodnota DataValue ;

} ;

int hlavní ( )

{

Data data1 , údaje2 , údaje3 ;

údaje1. typ = CELÉ ČÍSLO ;
údaje1. hodnota . intValue = 42 ;

údaje2. typ = PLOVÁK ;
údaje2. hodnota . floatValue = 3.14f ;

údaje3. typ = CHAR ;
údaje3. hodnota . charValue = 'A' ;

cout << 'Data 1: ' << údaje1. hodnota . intValue << endl ;
cout << 'Data 2: ' << údaje2. hodnota . floatValue << endl ;
cout << 'Data 3: ' << údaje3. hodnota . charValue << endl ;

vrátit se 0 ;

}

V tomto příkladu máme program, který využívá výčty, sjednocení a struktury k vytvoření flexibilní datové struktury, která je schopna uchovávat různé typy hodnot. Výčet „DataType“ je definován tak, aby představoval tři základní datové typy: INTEGER, FLOAT a CHAR. Výčet zlepšuje čitelnost a udržovatelnost kódu tím, že nabízí sadu pojmenovaných integrálních konstant.

Poté vytvoříme sjednocení nazvané „DataValue“ se třemi členy: „charValue“ typu char, „floatValue“ typu float a „intValue“ typu int. S unií sdílejí tito členové společné paměťové umístění, které umožňuje unii zaměnitelně přizpůsobovat hodnoty různých typů. Poté je vytvořena struktura „Data“, která se skládá ze dvou členů: enumerátoru „DataType“ s názvem „type“ a svazku „DataValue“ s názvem „value“. Tato struktura nám umožňuje přidružit datový typ k jeho odpovídající hodnotě a poskytnout tak strukturovanou reprezentaci.

Ve funkci „hlavní“ vytvoříme instanci tří instancí struktury „Data“: „data1“, „data2“ a „data3“. Hodnoty těmto instancím přiřadíme určením datového typu a nastavením příslušné hodnoty v rámci sjednocení. Například „data1“ je přiřazena typu INTEGER s hodnotou 42. Nakonec použijeme příkazy „cout“ k vytištění hodnot, které jsou uloženy v každé instanci „Data“. Program vypíše celočíselnou hodnotu „data1“, hodnotu „data2“ s plovoucí desetinnou čárkou a hodnotu znaku „data3“.

Tento příklad ukazuje, jak lze použít kombinaci výčtů, sjednocení a struktur k vytvoření univerzální a typově bezpečné reprezentace dat v C++.

Závěr

Sjednocení C++ poskytuje výkonný a flexibilní mechanismus pro správu různých typů dat v rámci jednoho paměťového prostoru. Příklady, které jsou ilustrovány v tomto článku, zdůrazňují přizpůsobivost a efektivitu odborů při řešení řady scénářů. Od základních použití, která demonstrují zaměnitelnost datových typů až po složitější aplikace zahrnující struktury a výčty, tyto příklady podtrhují efektivitu a přizpůsobivost, kterou sjednocení přináší do programování v C++.