Przykłady Unii C++

Przyklady Unii C



Unia to specjalny typ klasy w C++, który umożliwia przechowywanie różnych typów danych w lokalizacji pamięci współdzielonej. W przeciwieństwie do struktur, w których każda część zwykle otrzymuje swoją pamięć, unie pozwalają różnym fragmentom danych korzystać z tego samego miejsca w pamięci. Ta cecha sprawia, że ​​unie są szczególnie przydatne, gdy priorytetem jest wydajność pamięci i dostęp tylko do jednego elementu członkowskiego musi być dostępny w danym momencie. W tym artykule zagłębimy się w koncepcję unii w C++ i przeanalizujemy wiele przykładów demonstrujących ich użyteczność w różnych scenariuszach.

Składnia:

Unia to typ definiowany przez użytkownika, umożliwiający przechowywanie różnych typów danych w jednym miejscu pamięci współdzielonej. Użycie unii ma składnię identyczną ze strukturą.







Podstawowa składnia jest następująca:



unia Nazwa Unii {

// Deklaracje członków

Element DataType11 ;

Element DataType22 ;

//...

} ;

Tutaj „UnionName” służy jako identyfikator unii, który zapewnia unikalną nazwę odwołującą się do tego konkretnego typu zdefiniowanego przez użytkownika. Typy danych członków związku są oznaczone jako „DataType1”, „DataType2” i tak dalej. Te typy danych oznaczają różne rodzaje informacji, które mogą być przechowywane w ramach związku. Każdy członek związku, oznaczony nazwami takimi jak „członek1”, „członek2” itp., reprezentuje odrębną część danych.



Teraz rozumiemy podstawową składnię. Użyjmy teraz kilku przykładów, aby lepiej to zrozumieć.





Przykład 1: Podstawowe użycie związku

Pierwszy przykład ilustruje podstawowe wykorzystanie unii w C++, pokazując, w jaki sposób umożliwiają one współdzielenie przestrzeni pamięci pomiędzy różnymi typami danych w ramach jednej struktury.

Oto przykład:



#include

używając przestrzeni nazw std ;

unia ArrayUnion {

wew intArray [ 5 ] ;

platforma tablica pływakowa [ 5 ] ;

} ;

wew główny ( ) {

ArrayUnion ArrayUnion ;

Do ( wew I = 0 ; I < 5 ; ++ I ) {

tablicaUnia. intArray [ I ] = I * 2 ;

}

cout << „Tablica wewnętrzna:” ;

Do ( wew I = 0 ; I < 5 ; ++ I ) {

cout << ' ' << tablicaUnia. intArray [ I ] ;

}

cout << koniec ;

Do ( wew I = 0 ; I < 5 ; ++ I ) {

tablicaUnia. tablica pływakowa [ I ] = I * 1,5 f ;

}

cout << „Tablica pływająca:” ;

Do ( wew I = 0 ; I < 5 ; ++ I ) {

cout << ' ' << tablicaUnia. tablica pływakowa [ I ] ;

}

cout << koniec ;

powrót 0 ;

}

W tym fragmencie kodu C++ używamy unii o nazwie „MyUnion”, która zawiera trzy różne elementy danych: liczbę całkowitą (intValue), liczbę zmiennoprzecinkową (floatValue) i znak (charValue). Tylko jeden z tych członków może być aktywny w danym momencie ze względu na zdolność związku do współdzielenia przestrzeni pamięci.

W ramach funkcji „main” deklarujemy instancję unii, którą jest „myUnion”. Najpierw ustawiamy wartość elementu całkowitego na 42 i używamy „cout”, aby ją wydrukować. Następnie przypisujemy wartość zmiennoprzecinkową 3,14 do elementu „floatValue” i drukujemy ją. Na koniec przypisujemy znak „A” do elementu „charValue” i drukujemy go. Należy pamiętać, że ponieważ wszyscy członkowie związku mają to samo miejsce w pamięci, zmiana jednego członka może mieć wpływ na wartości pozostałych członków. Kod kończy się zwróceniem 0, co oznacza pomyślne wykonanie.

Przykład 2: Unia z Struct

Struktura to typ danych w C++, który użytkownicy mogą tworzyć w celu łączenia zmiennych różnych typów pod jedną ujednoliconą nazwą. Połączenie unii ze strukturą może być przydatne, gdy chcemy utworzyć strukturę danych, która może przechowywać różne typy danych, a każdy typ jest powiązany z określonym polem. To połączenie pozwala na tworzenie złożonych struktur danych charakteryzujących się różnorodną reprezentacją.

Oto przykład użycia unii w strukturze w C++:

#include

używając przestrzeni nazw std ;

struktura Punkt {

wew s1 ;

wew s2 ;

} ;

unia Kształt {

wew boki ;

platforma promień ;

Środek punktu ;

} ;

wew główny ( ) {

Kształt kształtu ;

kształt. boki = 5 ;
cout << 'Boki: ' << kształt. boki << koniec ;

kształt. promień = 6.0f ;
cout << „Promień:” << kształt. promień << koniec ;

kształt. Centrum = { 10 , 20 } ;
cout << 'Centrum: (' << kształt. Centrum . s1 << „”, „ << kształt. Centrum . s2 << „)” << koniec ;

powrót 0 ;

}

W tym kodzie definiujemy program w C++, który używa unii i struktury do reprezentowania różnych aspektów kształtu geometrycznego. Najpierw deklarujemy strukturę „Point”, która składa się z dwóch elementów całkowitych, „s1” i „s2”, które reprezentują współrzędne punktu w przestrzeni 2D. Następnie definiujemy „unię” o nazwie „Kształt”, która składa się z trzech elementów: liczby całkowitej „boków”, zmiennoprzecinkowej „promień” i struktury „Point” o nazwie „centrum”. Przechodząc do funkcji „main”, tworzymy obiekt „Shape” o nazwie „shape”. Następnie demonstrujemy wszechstronność związku, przypisując wartości różnym jego członkom. Początkowo ustawiamy liczbę boków na 5 i drukujemy wynik. Następnie przypisujemy kształtowi promień 6,0 i wyprowadzamy promień. Na koniec przypisujemy kształtowi punkt środkowy o współrzędnych (10, 20) i drukujemy współrzędne środka.

Przykład 3: Unia z Enum

W C++ wyliczenia, powszechnie nazywane wyliczeniami, służą do definiowania kolekcji nazwanych stałych całkowitych. Łączenie wyliczeń z związkami może być przydatne w scenariuszach, w których chcemy reprezentować zmienną, która może przyjmować różne typy, każdy powiązany z określoną wartością wyliczenia.

Oto przykład:

#include

używając przestrzeni nazw std ;

wyliczenie Typ danych {

LICZBA CAŁKOWITA ,

PLATFORMA ,

ZWĘGLAĆ

} ;

unia Wartość danych {

wew intWartość ;

platforma wartość pływająca ;

zwęglać wartość char ;

} ;

struktura Dane {

Typ danych ;

WartośćDanych ;

} ;

wew główny ( )

{

Dane danych1 , dane2 , dane3 ;

dane1. typ = LICZBA CAŁKOWITA ;
dane1. wartość . intWartość = 42 ;

dane2. typ = PLATFORMA ;
dane2. wartość . wartość pływająca = 3.14f ;

dane3. typ = ZWĘGLAĆ ;
dane3. wartość . wartość char = 'A' ;

cout << „Dane 1:” << dane1. wartość . intWartość << koniec ;
cout << „Dane 2:” << dane2. wartość . wartość pływająca << koniec ;
cout << „Dane 3:” << dane3. wartość . wartość char << koniec ;

powrót 0 ;

}

W tym przykładzie mamy program, który wykorzystuje wyliczenia, unie i struktury do tworzenia elastycznej struktury danych, która może przechowywać różne typy wartości. Wyliczenie „DataType” definiuje się tak, aby reprezentowało trzy podstawowe typy danych: INTEGER, FLOAT i CHAR. Wyliczenie zwiększa czytelność kodu i łatwość konserwacji, oferując zestaw nazwanych stałych całkowitych.

Następnie tworzymy unię o nazwie „DataValue” z trzema elementami: „charValue” typu char, „floatValue” typu float i „intValue” typu int. W przypadku unii elementy te mają wspólną lokalizację w pamięci, która umożliwia unii wymienne przyjmowanie wartości różnych typów. Następnie tworzona jest struktura „Data”, która składa się z dwóch elementów: modułu wyliczającego „DataType” o nazwie „type” i unii „DataValue” o nazwie „value”. Ta struktura pozwala nam powiązać typ danych z odpowiadającą mu wartością, zapewniając uporządkowaną reprezentację.

W funkcji „main” tworzymy trzy instancje struktury „Data”: „dane1”, „dane2” i „dane3”. Przypisujemy wartości tym instancjom, określając typ danych i ustawiając odpowiednią wartość w ramach unii. Na przykład „data1” ma przypisany typ INTEGER o wartości 42. Na koniec używamy instrukcji „cout”, aby wydrukować wartości przechowywane w każdej instancji „Data”. Program wyprowadza wartość całkowitą „data1”, wartość zmiennoprzecinkową „data2” i wartość znakową „data3”.

Ten przykład ilustruje, jak można zastosować łączenie wyliczeń, unii i struktur w celu utworzenia wszechstronnej i bezpiecznej dla typu reprezentacji danych w języku C++.

Wniosek

Unie C++ zapewniają potężny i elastyczny mechanizm zarządzania różnorodnymi typami danych w jednym obszarze pamięci. Przypadki zilustrowane w tym artykule podkreślają zdolność adaptacji i skuteczność związków zawodowych w rozwiązywaniu szeregu scenariuszy. Od podstawowych zastosowań demonstrujących wymienność typów danych po bardziej złożone aplikacje obejmujące struktury i wyliczenia — przykłady te podkreślają wydajność i możliwości adaptacji, jakie unie wnoszą do programowania w C++.