C++ savienības piemēri

C Savienibas Piemeri



Apvienība ir īpašs C++ klases tips, kas ļauj glabāt dažādus datu tipus koplietojamā atmiņas vietā. Atšķirībā no struktūrām, kur katra daļa parasti iegūst savu atmiņu, arodbiedrības ļauj dažādām datu daļām izmantot vienu un to pašu atmiņas vietu. Šī īpašība padara arodbiedrības īpaši noderīgas, ja atmiņas efektivitāte ir prioritāte un vienlaikus ir jāpiekļūst tikai vienam no dalībniekiem. Šajā rakstā mēs iedziļināsimies arodbiedrību jēdzienā C++ valodā un izpētīsim vairākus piemērus, kas parāda to lietderību dažādos scenārijos.

Sintakse:

Apvienība ir lietotāja definēts veids, kas ļauj glabāt dažādus datu tipus koplietotās atmiņas vietā. Izmantojot savienību, tiek ievērota sintakse, kas ir identiska struktūrai.







Pamata sintakse ir šāda:



savienība Savienības nosaukums {

// Biedru deklarācijas

DataType1 dalībnieks1 ;

DataType2 dalībnieks2 ;

//...

} ;

Šeit “UnionName” kalpo kā savienības identifikators, kas nodrošina unikālu nosaukumu, lai atsauktos uz šo konkrēto lietotāja definēto veidu. Arodbiedrības biedru datu tipi ir apzīmēti kā “DataType1”, “DataType2” un tā tālāk. Šie datu tipi apzīmē dažāda veida informāciju, ko var glabāt savienībā. Katrs arodbiedrības dalībnieks, kas apzīmēts ar tādiem nosaukumiem kā “biedrs1”, “biedrs2” utt., apzīmē atsevišķu datu daļu.



Tagad mēs saprotam pamata sintaksi. Tagad izmantosim dažus gadījumus, lai to labāk izprastu.





1. piemērs: Savienības pamata lietojums

Pirmais piemērs ilustrē savienību pamata izmantošanu C++, parādot, kā tās ļauj koplietot atmiņas vietu starp dažādiem datu tipiem vienā struktūrā.

Šeit ir piemērs:



#include

izmantojot namespace std ;

savienība ArrayUnion {

starpt intArray [ 5 ] ;

peldēt floatArray [ 5 ] ;

} ;

starpt galvenais ( ) {

ArrayUnion arrayUnion ;

priekš ( starpt i = 0 ; i < 5 ; ++ i ) {

arrayUnion. intArray [ i ] = i * 2 ;

}

cout << 'Int Array:' ;

priekš ( starpt i = 0 ; i < 5 ; ++ i ) {

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

}

cout << endl ;

priekš ( starpt i = 0 ; i < 5 ; ++ i ) {

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

}

cout << 'Float Array': ;

priekš ( starpt i = 0 ; i < 5 ; ++ i ) {

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

}

cout << endl ;

atgriezties 0 ;

}

Šajā C++ koda fragmentā mēs izmantojam savienību ar nosaukumu “MyUnion”, kas ietver trīs dažādus datu elementus: veselu skaitli (intValue), peldošā komata skaitli (floatValue) un rakstzīmi (charValue). Tikai viens no šiem dalībniekiem var būt aktīvs jebkurā brīdī, jo arodbiedrība spēj koplietot atmiņas vietu.

Funkcijā “Galvenā” mēs deklarējam savienības gadījumu, kas ir “myUnion”. Pirmkārt, mēs iestatām vesela skaitļa locekļa vērtību uz 42 un izmantojam “cout”, lai to izdrukātu. Pēc tam “floatValue” dalībniekam piešķiram peldošā komata vērtību 3,14 un izdrukājam to. Visbeidzot, mēs piešķiram rakstzīmi “A” dalībniekam “charValue” un izdrukājam to. Ir svarīgi atcerēties, ka, tā kā visiem arodbiedrības locekļiem ir viena un tā pati atmiņas vieta, viena biedra maiņa var ietekmēt citu biedru vērtības. Kods beidzas, atgriežot 0, kas nozīmē veiksmīgu izpildi.

2. piemērs: Savienība ar struktūru

Struktūra ir C++ datu veids, ko lietotāji var izveidot, lai apvienotu dažāda veida mainīgos vienā vienotā nosaukumā. Apvienības apvienošana ar struktūru var būt noderīga, ja vēlamies izveidot datu struktūru, kurā var būt dažāda veida dati, un katrs veids ir saistīts ar noteiktu lauku. Šī savienošana pārī ļauj izstrādāt sarežģītas datu struktūras ar dažādiem attēlojumiem.

Šeit ir piemērs savienības izmantošanai struktūrā C++:

#include

izmantojot namespace std ;

struktūra Punkts {

starpt s1 ;

starpt s2 ;

} ;

savienība Forma {

starpt puses ;

peldēt rādiuss ;

Punkta centrs ;

} ;

starpt galvenais ( ) {

Formas forma ;

forma. puses = 5 ;
cout << 'Sāni:' << forma. puses << endl ;

forma. rādiuss = 6.0f ;
cout << 'Rādiuss:' << forma. rādiuss << endl ;

forma. centrs = { 10 , divdesmit } ;
cout << 'Centrs: (' << forma. centrs . s1 << ',' << forma. centrs . s2 << ')' << endl ;

atgriezties 0 ;

}

Šajā kodā mēs definējam C++ programmu, kas izmanto savienību un struktūru, lai attēlotu dažādus ģeometriskās formas aspektus. Pirmkārt, mēs deklarējam 'punkta' struktūru, kas sastāv no diviem veseliem skaitļiem, 's1' un 's2', kas attēlo punkta koordinātas 2D telpā. Pēc tam mēs definējam “savienību” ar nosaukumu “Shape”, kas sastāv no trim locekļiem: “malu” vesela skaitļa, “rādiusa” peldošā komata un “Punkta” struktūras ar nosaukumu “centrs”. Pārejot uz “galveno” funkciju, mēs izveidojam objektu “Shape” ar nosaukumu “shape”. Pēc tam mēs demonstrējam savienības daudzpusību, piešķirot vērtības dažādiem tās dalībniekiem. Sākotnēji mēs iestatām malu skaitu uz 5 un izdrukājam rezultātu. Tālāk mēs piešķiram formai rādiusu 6,0 un izvadām rādiusu. Visbeidzot, formai piešķiram centra punktu ar koordinātām (10, 20) un izdrukājam centra koordinātas.

3. piemērs: savienība ar Enum

C++ valodā uzskaitījumi, ko parasti dēvē par enums, kalpo, lai definētu nosaukto integrālo konstantu kolekciju. Enumu apvienošana ar savienībām var būt noderīga scenārijos, kuros mēs vēlamies attēlot mainīgo, kam var būt dažādi veidi, no kuriem katrs ir saistīts ar noteiktu uzskaites vērtību.

Šeit ir piemērs:

#include

izmantojot namespace std ;

enum Datu tips {

VESELS SKAITLIS ,

PLŪDĪT ,

CHAR

} ;

savienība DataValue {

starpt intValue ;

peldēt floatValue ;

char charValue ;

} ;

struktūra Dati {

DataType tips ;

DataValue vērtība ;

} ;

starpt galvenais ( )

{

Datu dati1 , dati2 , dati3 ;

dati1. veids = VESELS SKAITLIS ;
dati1. vērtību . intValue = 42 ;

dati2. veids = PLŪDĪT ;
dati2. vērtību . floatValue = 3.14f ;

dati3. veids = CHAR ;
dati3. vērtību . charValue = 'A' ;

cout << 'Dati 1:' << dati1. vērtību . intValue << endl ;
cout << 'Dati 2:' << dati2. vērtību . floatValue << endl ;
cout << 'Dati 3:' << dati3. vērtību . charValue << endl ;

atgriezties 0 ;

}

Šajā piemērā mums ir programma, kas izmanto enums, savienības un struktūras, lai izveidotu elastīgu datu struktūru, kas spēj saturēt dažāda veida vērtības. “DataType” enums ir definēts, lai attēlotu trīs pamata datu tipus: INTEGER, FLOAT un CHAR. Enum uzlabo koda lasāmību un apkopi, piedāvājot nosauktu integrālo konstantu kopu.

Pēc tam mēs izveidojam savienību ar nosaukumu “DataValue” ar trim dalībniekiem: “charValue” tipa char, “floatValue” ar tipu float un “intValue” ar tipu int. Savienībā šiem dalībniekiem ir kopīga atmiņas vieta, kas ļauj savienībai savstarpēji aizstāt dažādu veidu vērtības. Pēc tam tiek izveidota struktūra “Data”, kas sastāv no diviem locekļiem: “DataType” skaitītāja ar nosaukumu “type” un “DataValue” savienības ar nosaukumu “vērtība”. Šī struktūra ļauj mums saistīt datu tipu ar tā atbilstošo vērtību, nodrošinot strukturētu attēlojumu.

Funkcijā “galvenā” mēs izveidojam trīs “Data” struktūras gadījumus: “data1”, “data2” un “data3”. Mēs piešķiram vērtības šiem gadījumiem, norādot datu veidu un iestatot atbilstošo vērtību savienības ietvaros. Piemēram, “data1” ir piešķirts ar INTEGER tipu ar vērtību 42. Visbeidzot, mēs izmantojam “cout” priekšrakstus, lai izdrukātu vērtības, kas tiek glabātas katrā “Data” instancē. Programma izvada vesela skaitļa vērtību “data1”, peldošā komata vērtību “data2” un rakstzīmju vērtību “data3”.

Šis piemērs parāda, kā enums, savienības un struktūras var izmantot, lai izveidotu daudzpusīgu un tipam drošu datu attēlojumu C++.

Secinājums

C++ savienības nodrošina jaudīgu un elastīgu mehānismu dažādu datu tipu pārvaldībai vienā atmiņas telpā. Šajā rakstā ilustrētie gadījumi izceļ arodbiedrību pielāgošanās spēju un efektivitāti dažādu scenāriju risināšanā. No pamata lietojumiem, kas parāda datu tipu savstarpēju aizstājamību, līdz sarežģītākām lietojumprogrammām, kas ietver struktūras un enumus, šie piemēri uzsver efektivitāti un pielāgošanās spēju, ko arodbiedrības nodrošina C++ programmēšanai.