C++ Unionin esimerkkejä

C Unionin Esimerkkeja



Unioni on C++:n erikoisluokkatyyppi, joka mahdollistaa erilaisten tietotyyppien tallentamisen jaettuun muistipaikkaan. Toisin kuin rakenteet, joissa kukin osa yleensä saa muistinsa, liitot antavat eri tietopalojen käyttää samaa muistipaikkaa. Tämä ominaisuus tekee liitoista erityisen hyödyllisiä, kun muistin tehokkuus on etusijalla ja vain yhtä jäsentä tarvitsee käyttää kerrallaan. Tässä artikkelissa perehdymme ammattiliittojen käsitteeseen C++:ssa ja tutkimme useita esimerkkejä, jotka osoittavat niiden hyödyllisyyden erilaisissa skenaarioissa.

Syntaksi:

Liitos on käyttäjän määrittelemä tyyppi, joka mahdollistaa erilaisten tietotyyppien tallentamisen jaettuun muistipaikkaan. Liiton käyttäminen noudattaa syntaksia, joka on identtinen rakenteen kanssa.







Perussyntaksi on seuraava:



liitto Unionin nimi {

// Jäsenilmoitukset

Tietotyyppi1 jäsen1 ;

Tietotyyppi2 jäsen2 ;

//...

} ;

Tässä 'UnionName' toimii liiton tunnisteena, joka tarjoaa yksilöllisen nimen viittaamaan tähän käyttäjän määrittämään tyyppiin. Liiton jäsenten tietotyypit on merkitty 'DataType1', 'DataType2' ja niin edelleen. Nämä tietotyypit tarkoittavat erilaisia ​​tietoja, joita liiton sisällä voidaan tallentaa. Jokainen liiton jäsen, joka on nimetty nimillä, kuten 'jäsen1', 'jäsen2' jne., edustaa erillistä tietoa.



Ymmärrämme nyt perussyntaksin. Käytetään nyt muutama tapaus ymmärtääksemme tätä paremmin.





Esimerkki 1: Unionin peruskäyttö

Ensimmäinen esimerkki havainnollistaa liittojen peruskäyttöä C++:ssa ja näyttää kuinka ne mahdollistavat muistitilan jakamisen eri tietotyyppien kesken yhdessä rakenteessa.

Tässä on esimerkki:



#include

käyttäen nimiavaruutta std ;

liitto ArrayUnion {

int intArray [ 5 ] ;

kellua floatArray [ 5 ] ;

} ;

int pää ( ) {

ArrayUnion arrayUnion ;

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

arrayUnion. intArray [ i ] = i * 2 ;

}

cout << 'Int Array:' ;

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

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

}

cout << endl ;

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

arrayUnion. floatArray [ i ] = i * 1.5f ;

}

cout << 'Float Array:' ;

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

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

}

cout << endl ;

palata 0 ;

}

Tässä C++-koodinpätkässä käytämme 'MyUnion'-nimistä liittoa, joka sisältää kolme erilaista datajäsentä: kokonaisluvun (intValue), liukulukuluvun (floatValue) ja merkin (charValue). Vain yksi näistä jäsenistä voi olla aktiivinen missä tahansa pisteessä, koska ammattiliitto voi jakaa muistitilan.

Pääfunktiossa julistamme liiton esiintymän, joka on 'myUnion'. Ensin asetamme kokonaisluvun jäsenen arvoksi 42 ja tulostamme sen käyttämällä 'cout'. Myöhemmin määritämme 'floatValue'-jäsenelle liukulukuarvon 3,14 ja tulostamme sen. Lopuksi määritämme merkin 'A' 'charValue' -jäsenelle ja tulostamme sen. On tärkeää muistaa, että koska kaikki liiton jäsenet jakavat saman muistipaikan, yhden jäsenen muuttaminen voi vaikuttaa muiden jäsenten arvoihin. Koodi päättää palauttamalla 0:n, mikä tarkoittaa onnistunutta suoritusta.

Esimerkki 2: Union with Struct

Rakenne on C++:n tietotyyppi, jonka käyttäjät voivat luoda yhdistääkseen erityyppisiä muuttujia yhdeksi yhtenäiseksi nimeksi. Liiton yhdistäminen rakenteen kanssa voi olla hyödyllistä, kun haluamme luoda tietorakenteen, joka voi sisältää erityyppisiä tietoja, ja jokainen tyyppi liittyy tiettyyn kenttään. Tämä pariliitos mahdollistaa monimutkaisten tietorakenteiden kehittämisen, joissa on erilaisia ​​esityksiä.

Tässä on esimerkki liiton käyttämisestä rakenteessa C++:ssa:

#include

käyttäen nimiavaruutta std ;

struct Kohta {

int s1 ;

int s2 ;

} ;

liitto Muoto {

int sivut ;

kellua säde ;

Pistekeskus ;

} ;

int pää ( ) {

Muodon muoto ;

muoto. sivut = 5 ;
cout << 'Sivut:' << muoto. sivut << endl ;

muoto. säde = 6.0f ;
cout << 'Säde:' << muoto. säde << endl ;

muoto. keskusta = { 10 , kaksikymmentä } ;
cout << 'Keski: (' << muoto. keskusta . s1 << ', ' << muoto. keskusta . s2 << ')' << endl ;

palata 0 ;

}

Tässä koodissa määrittelemme C++-ohjelman, joka käyttää liitosta ja rakennetta edustamaan geometrisen muodon eri puolia. Ensin määritellään 'piste'-rakenne, joka koostuu kahdesta kokonaislukujäsenestä, 's1' ja 's2', jotka edustavat pisteen koordinaatteja 2D-avaruudessa. Sitten määrittelemme 'liitoksen' nimeltä 'Shape', joka koostuu kolmesta jäsenestä: 'sivujen' kokonaisluvusta, 'säteestä' liukulukusta ja 'piste'-rakenteesta nimeltä 'keskus'. Siirryttäessä 'pää'-toimintoon, luomme 'Shape' -objektin nimeltä 'muoto'. Osoitamme sitten liiton monipuolisuutta antamalla arvoja sen eri jäsenille. Aluksi asetamme sivujen lukumääräksi 5 ja tulostamme tuloksen. Seuraavaksi määritämme muodolle säteen 6,0 ja tulostamme säteen. Lopuksi määritämme muodolle keskipisteen koordinaatteineen (10, 20) ja tulostamme keskipisteen koordinaatit.

Esimerkki 3: Liittyminen Enumin kanssa

C++-kielessä enumeraatiot, joita yleisesti kutsutaan enumeiksi, palvelevat tarkoitusta määrittämään kokoelma nimettyjä integraalivakioita. Enumien yhdistäminen liitäntöihin voi olla hyödyllistä skenaarioissa, joissa haluamme edustaa muuttujaa, joka voi olla eri tyyppejä, joista jokainen liittyy tiettyyn enum-arvoon.

Tässä on esimerkki:

#include

käyttäen nimiavaruutta std ;

enum Tietotyyppi {

KOKONAISLUKU ,

KELLUA ,

HIILTYÄ

} ;

liitto DataValue {

int intValue ;

kellua floatValue ;

hiiltyä charValue ;

} ;

struct Data {

DataType-tyyppi ;

DataValue-arvo ;

} ;

int pää ( )

{

Datatiedot1 , data2 , data3 ;

data1. tyyppi = KOKONAISLUKU ;
data1. arvo . intValue = 42 ;

data2. tyyppi = KELLUA ;
data2. arvo . floatValue = 3.14f ;

data3. tyyppi = HIILTYÄ ;
data3. arvo . charValue = 'A' ;

cout << 'Data 1:' << data1. arvo . intValue << endl ;
cout << 'Data 2:' << data2. arvo . floatValue << endl ;
cout << 'Data 3:' << data3. arvo . charValue << endl ;

palata 0 ;

}

Tätä esimerkkiä varten meillä on ohjelma, joka käyttää enumeita, liittoja ja rakenteita luodakseen joustavan tietorakenteen, joka pystyy säilyttämään erityyppisiä arvoja. 'DataType'-luettelo on määritelty edustamaan kolmea perustietotyyppiä: INTEGER, FLOAT ja CHAR. Enum parantaa koodin luettavuutta ja ylläpidettävyyttä tarjoamalla joukon nimettyjä integraalivakioita.

Sitten teemme liiton nimeltä 'DataValue', jossa on kolme jäsentä: 'charValue' on tyyppiä char, 'floatValue' on tyyppiä float ja 'intValue' on tyyppiä int. Liiton kanssa näillä jäsenillä on yhteinen muistipaikka, joka sallii liiton vaihtokelpoisesti sovittaa eri tyyppien arvot. Sitten luodaan 'Data' -rakenne, joka koostuu kahdesta jäsenestä: 'DataType' -luettelosta nimeltä 'type' ja 'DataValue'-liitosta nimeltä 'arvo'. Tämän rakenteen avulla voimme liittää tietotyypin sitä vastaavaan arvoon, mikä tarjoaa jäsennellyn esityksen.

'Main'-funktiossa instantoimme kolme 'Data'-rakenteen esiintymää: 'data1', 'data2' ja 'data3'. Määritämme arvot näille esiintymille määrittämällä tietotyypin ja asettamalla sopivan arvon liiton sisällä. Esimerkiksi 'data1' on määritetty INTEGER-tyypillä, jonka arvo on 42. Lopuksi käytämme 'cout'-lauseita jokaiseen 'Data'-instanssiin tallennettujen arvojen tulostamiseen. Ohjelma tulostaa kokonaislukuarvon 'data1', liukulukuarvon 'data2' ja merkkiarvon 'data3'.

Tämä esimerkki havainnollistaa, kuinka enumien, liittojen ja rakenteiden yhdistämistä voidaan käyttää luomaan monipuolinen ja tyyppiturvallinen tietoesitys C++:ssa.

Johtopäätös

C++-liitännät tarjoavat tehokkaan ja joustavan mekanismin eri tietotyyppien hallintaan yhdessä muistitilassa. Tässä artikkelissa kuvatut tapaukset korostavat ammattiliittojen sopeutumiskykyä ja tehokkuutta erilaisten skenaarioiden käsittelyssä. Peruskäyttötavoista, jotka osoittavat tietotyyppien vaihdettavuuden monimutkaisempiin sovelluksiin, jotka sisältävät rakenteita ja enumeita, nämä esimerkit korostavat tehokkuutta ja mukautumiskykyä, jonka ammattiliitot tuovat C++-ohjelmointiin.