C++ liidu näited

C Liidu Naited



Liit on C++ eriklassi tüüp, mis võimaldab salvestada jagatud mälu asukohta erinevaid andmetüüpe. Erinevalt struktuuridest, kus iga osa saab tavaliselt oma mälu, lubavad ühendused erinevatel andmetel kasutada sama mälukohta. See omadus muudab ametiühingud eriti kasulikuks, kui mälu tõhusus on prioriteet ja korraga tuleb juurde pääseda ainult ühele liikmele. Selles artiklis käsitleme ametiühingute mõistet C++ keeles ja uurime mitmeid näiteid, mis näitavad nende kasulikkust erinevates stsenaariumides.

Süntaks:

Liit on kasutaja määratletud tüüp, mis võimaldab ühismälu asukohas salvestada erinevaid andmetüüpe. Ühenduse kasutamine järgib süntaksit, mis on struktuuriga identne.







Põhiline süntaks on järgmine:



liit Liidu nimi {

// Liikmete deklaratsioonid

Andmetüüp1 liige1 ;

DataType2 liige2 ;

//...

} ;

Siin toimib 'UnionName' liidu identifikaatorina, mis annab unikaalse nime, mis viitab sellele konkreetsele kasutaja määratud tüübile. Ametiühinguliikmete andmetüübid on tähistatud kui 'DataType1', 'DataType2' ja nii edasi. Need andmetüübid tähistavad erinevat tüüpi teavet, mida saab liidus salvestada. Iga liidu liige, mida tähistatakse selliste nimedega nagu 'liige1', 'liige2' jne, esindab eraldiseisvat andmeosa.



Nüüd mõistame põhisüntaksit. Selle paremaks mõistmiseks kasutame nüüd mõnda juhtumit.





Näide 1: Liidu põhikasutus

Esimene näide illustreerib ühenduste põhikasutust C++-s, näidates, kuidas need võimaldavad jagada mäluruumi erinevate andmetüüpide vahel ühes struktuuris.

Siin on näide:



#include

kasutades nimeruumi std ;

liit ArrayUnion {

int intArray [ 5 ] ;

ujuk floatArray [ 5 ] ;

} ;

int peamine ( ) {

ArrayUnion arrayUnion ;

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

arrayUnion. intArray [ i ] = i * 2 ;

}

cout << 'Int Array:' ;

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

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

}

cout << endl ;

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

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

}

cout << 'Float Array': ;

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

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

}

cout << endl ;

tagasi 0 ;

}

Selles C++ koodilõigus kasutame ühendust nimega 'MyUnion', mis sisaldab kolme erinevat andmeliiget: täisarv (intValue), ujukomaarv (floatValue) ja märk (charValue). Ainult üks neist liikmetest võib mis tahes hetkel olla aktiivne, kuna ametiühingul on mäluruumi jagada.

Funktsioonis 'Peamine' kuulutame välja liidu eksemplari, milleks on 'myUnion'. Esiteks määrame täisarvu liikme väärtuseks 42 ja kasutame selle printimiseks sõna 'cout'. Seejärel määrame ujukoma väärtuse 3,14 liikmele 'floatValue' ja prindime selle. Lõpuks määrame märgi 'A' liikmele 'charValue' ja prindime selle. Oluline on meeles pidada, et kuna kõik ametiühingu liikmed jagavad sama mälukohta, võib ühe liikme muutmine mõjutada teiste liikmete väärtusi. Kood lõpetab 0 tagastamisega, mis tähistab edukat täitmist.

Näide 2: Liit struktuuriga

Struktuur on C++-i andmetüüp, mille kasutajad saavad luua, et kombineerida erinevat tüüpi muutujaid ühe ühtse nime all. Ühenduse kombineerimine struktuuriga võib olla kasulik, kui tahame luua andmestruktuuri, mis mahutab erinevat tüüpi andmeid ja iga tüüp on seotud konkreetse väljaga. See sidumine võimaldab arendada keerukaid andmestruktuure, millel on erinevad esitused.

Siin on näide ühenduse kasutamisest C++-i struktuuris:

#include

kasutades nimeruumi std ;

struktuur Punkt {

int s1 ;

int s2 ;

} ;

liit Kuju {

int küljed ;

ujuk raadius ;

Punkti keskus ;

} ;

int peamine ( ) {

Kuju kuju ;

kuju. küljed = 5 ;
cout << 'Küljed:' << kuju. küljed << endl ;

kuju. raadius = 6.0f ;
cout << 'Raadius:' << kuju. raadius << endl ;

kuju. Keskus = { 10 , kakskümmend } ;
cout << 'Keskus: (' << kuju. Keskus . s1 << ', ' << kuju. Keskus . s2 << ')' << endl ;

tagasi 0 ;

}

Selles koodis määratleme C++ programmi, mis kasutab geomeetrilise kujundi erinevate aspektide esitamiseks ühendust ja struktuuri. Esiteks deklareerime struktuuri 'Punkt', mis koosneb kahest täisarvulisest liikmest 's1' ja 's2', mis esindavad punkti koordinaate 2D-ruumis. Seejärel määratleme 'ühenduse' nimega 'Shape', mis koosneb kolmest liikmest: 'külgede' täisarv, 'raadius' ujukoma ja 'punkt' struktuur nimega 'keskus'. Liikudes põhifunktsiooni juurde, loome objekti 'Shape' nimega 'kuju'. Seejärel demonstreerime liidu mitmekülgsust, omistades selle erinevatele liikmetele väärtusi. Algselt seame külgede arvuks 5 ja trükime tulemuse. Järgmisena määrame kujundile raadiuse 6,0 ja väljastame raadiuse. Lõpuks määrame kujundile keskpunkti koordinaatidega (10, 20) ja trükime keskpunkti koordinaadid.

Näide 3: Liit Enum

C++-s on loendused, mida tavaliselt nimetatakse enumiteks, eesmärgiga määratleda nimega integraalkonstantide kogu. Enumite kombineerimine liitudega võib olla kasulik stsenaariumide korral, kus soovime esitada muutujat, mis võib olla erinevat tüüpi, millest igaüks on seotud konkreetse loendi väärtusega.

Siin on näide:

#include

kasutades nimeruumi std ;

enum Andmetüüp {

TÄISARV ,

UJUV ,

CHAR

} ;

liit DataValue {

int intValue ;

ujuk floatValue ;

char charValue ;

} ;

struktuur Andmed {

DataType tüüp ;

DataValue väärtus ;

} ;

int peamine ( )

{

Andmeandmed1 , andmed2 , andmed3 ;

andmed1. tüüp = TÄISARV ;
andmed1. väärtus . intValue = 42 ;

andmed2. tüüp = UJUV ;
andmed2. väärtus . floatValue = 3.14f ;

andmed3. tüüp = CHAR ;
andmed3. väärtus . charValue = 'A' ;

cout << 'Andmed 1:' << andmed1. väärtus . intValue << endl ;
cout << 'Andmed 2:' << andmed2. väärtus . floatValue << endl ;
cout << 'Andmed 3:' << andmed3. väärtus . charValue << endl ;

tagasi 0 ;

}

Selle näite jaoks on meil programm, mis kasutab loendeid, liite ja struktuure, et luua paindlik andmestruktuur, mis suudab hoida erinevat tüüpi väärtusi. Andmetüübi loend on määratletud esindama kolme põhiandmetüüpi: INTEGER, FLOAT ja CHAR. Enum suurendab koodi loetavust ja hooldatavust, pakkudes nimega integraalkonstantide komplekti.

Seejärel loome liidu nimega 'DataValue', millel on kolm liiget: 'charValue' tüüpi char, 'floatValue' tüüpi float ja 'intValue' tüüpi int. Ühenduse puhul jagavad need liikmed ühist mälukohta, mis võimaldab liidul vaheldumisi mahutada erinevate tüüpide väärtusi. Seejärel luuakse struktuur 'Andmed', mis koosneb kahest liikmest: loendurist 'DataType' nimega 'tüüp' ja 'DataValue' ühendusest nimega 'väärtus'. See struktuur võimaldab meil seostada andmetüübi vastava väärtusega, pakkudes struktureeritud esitust.

Funktsioonis 'Põhi' loome struktuuri 'Data' kolm eksemplari: 'data1', 'data2' ja 'data3'. Määrame nendele eksemplaridele väärtused, määrates andmetüübi ja määrates liidus sobiva väärtuse. Näiteks 'data1' on määratud INTEGER tüübiga, mille väärtus on 42. Lõpuks kasutame lauseid 'cout', et printida igas 'Data' eksemplaris salvestatud väärtused. Programm väljastab täisarvulise väärtuse “data1”, ujukoma väärtuse “data2” ja märgi väärtuse “data3”.

See näide illustreerib, kuidas enumite, liitude ja struktuuride kombineerimist saab kasutada mitmekülgse ja tüübikindla andmeesituse loomiseks C++ keeles.

Järeldus

C++ ühendused pakuvad võimsat ja paindlikku mehhanismi erinevate andmetüüpide haldamiseks ühes mäluruumis. Selles artiklis illustreeritud juhtumid rõhutavad ametiühingute kohanemisvõimet ja tõhusust mitmesuguste stsenaariumide lahendamisel. Alates põhilistest kasutusviisidest, mis näitavad andmetüüpide vahetatavust kuni keerukamate rakendusteni, mis hõlmavad struktuure ja loendeid, rõhutavad need näited tõhusust ja kohanemisvõimet, mida ametiühingud pakuvad C++ programmeerimisele.