Co to jest wiązanie strukturalne w C++?
Powiązanie struktury to funkcja C++ dodana w C++17, która umożliwia również dekompozycję struktury lub krotki na poszczególne zmienne, poprawiając zwięzłość kodu. Można go użyć do uproszczenia składni dostępu do elementu członkowskiego struktury i zmniejszenia możliwości wystąpienia błędów spowodowanych literówkami lub nieprawidłowym indeksowaniem.
Składnia
Składnia wiązania struktury w C++ jest następująca:
automatyczny [ var1 , var2 , ... ] = wyrażenie ;
W składni wiązania struktury w C++, gdzie „var1” i „var2” to nazwy zmiennych, a „expression” to wyrażenie, które zwraca strukturę lub klasę. Używamy słów kluczowych auto do deklarowania zmiennych, które są tworzone automatycznie.
Modyfikatory
Modyfikatory mogą być używane w parowaniu z powiązaniami strukturalnymi. Ich składnia jest wymieniona poniżej:
automatyczny & [ A , B , C , ... ] = wyrażenie ;
automatyczny && [ A , B , C , ... ] = wyrażenie ;
Operator „&” lub „&&” użyty w deklaracji określa, czy powiązanie jest odwołaniem do l-wartości, czy r-wartości. Odniesienie do lwartości reprezentowane przez „&” ustanawia odniesienie, którego można użyć do zmiany wartości zmiennych wiążących. Zmiany wartości dokonane przy użyciu referencji będą widoczne w oryginalnej strukturze lub krotce.
Z drugiej strony odwołanie do rwartości reprezentowane przez „&&” zapewnia odwołanie, które jest ograniczone do wykorzystania do odczytu wartości zmiennych zawartych w powiązaniu. Jest przydatny do wiązania z przejściowymi obiektami lub wartościami r, które muszą zostać zniszczone, ponieważ pozwala uniknąć tworzenia repliki obiektu, co może zająć pamięć i czas.
Przykład 1: Wiązanie struktury w C++
Poniżej znajduje się przykład powiązania struktury C++:
#includeprzy użyciu przestrzeni nazw std ;
struktura sześcian
{
int X ;
int I ;
int z ;
} ;
int główny ( )
{
sześcian c = { 10 , 20 , 30 } ;
automatyczny [ x_współrzędna , współrzędna_y , współrzędna z_ ] = C ;
cout << 'Oś X: ' << x_współrzędna << koniec ;
cout << 'Oś Y: ' << współrzędna_y << koniec ;
cout << 'Oś Z: ' << współrzędna z_ << koniec ;
powrót 0 ;
}
W powyższym przykładzie deklarujemy kostkę struktury z trzema liczbami całkowitymi x, y i z. Struktura przedstawia sześcian w przestrzeni. Tworzona jest zmienna c typu cube i inicjowana wartościami (10,20,30). W tej strukturze kodu powiązanie przypisuje wartości członków x, y i z struktury do poszczególnych zmiennych odpowiednio x_coordinate, y_coordinate, z_coordinate przy użyciu składni auto[ x_coordinate, y_coordinate, z_coordinate ] = c. Wynik powyższego pokazano poniżej:
Przykład 2: Powiązanie struktury w C++ w celu rozpakowania struktury
Poniżej znajduje się przykład powiązania struktury podczas rozpakowywania struktury:
#include#włącz <łańcuch>
przy użyciu przestrzeni nazw std ;
struktura Student {
nazwa ciągu ;
int wiek ;
} ;
int główny ( ) {
uczeń s { „Hamza” , 32 } ;
automatyczny [ nazwa , wiek ] = S ;
cout << nazwa << ' Jest ' << wiek << ' lat.' << koniec ;
powrót 0 ;
}
W powyższym kodzie struktura Student ma dwóch członków: a nazwa to jest ciąg znaków i an wiek to jest liczba całkowita. Następnie tworzymy obiekt Student i przypisujemy wartości początkowe każdemu z jego elementów. Członkowie s są następnie rozdzielani na nazwę zmiennej i wiek za pomocą powiązania strukturalnego, a następnie te wartości są drukowane tak, jak na poniższym zrzucie ekranu:
Przykład 3: Wiązanie struktury w C++ z modyfikatorami
Poniżej znajduje się przykład powiązania struktury, które wykorzystuje modyfikator do aktualizacji wartości zmiennej jako num1 i num2:
#include#include
przy użyciu przestrzeni nazw std ;
int główny ( ) {
krotka < int , int > T { 25 , 20 } ;
automatyczny & [ numer1 , liczba2 ] = T ;
cout << 'Wartość num1 = ' << numer1 << ', liczba2 = ' << liczba2 << ' \N ' ;
numer1 = 30 ;
cout << 'Zmieniona wartość num1 = ' << numer1 << ', liczba2 = ' << liczba2 <<
' \N ' ;
automatyczny && [ numer 3 , numer4 ] = make_tuple ( 100 , 250 ) ;
cout << „Teraz wartość num3 =” << numer 3 << ', liczba4 = ' << numer4 << ' \N ' ;
powrót 0 ;
}
W powyższym kodzie tworzymy krotkę t i używamy odwołania do lwartości, aby połączyć jej komponenty z liczbami num1 i num2. Następnie zmieniamy wartość num1 na 30 i wyprowadzamy wartości num1 i num2. Zbuduj także tymczasową krotkę za pomocą make_tuple(100, 250) i użyj odwołania rvalue, aby powiązać jej elementy z num3 i num4. Wartości num3 i num4 są następnie drukowane, ponieważ num3 i num4 są połączone z odwołaniem do wartości r, nie można ich użyć do zmiany tymczasowej krotki utworzonej przez make_tuple(100, 250). Potrafią tylko z niego czytać. Po uruchomieniu programu na ekranie pojawi się następujący wynik:
Wniosek
Powiązanie struktury to funkcja w języku C++, która rozpakowuje wiele wartości struktury lub klasy do poszczególnych zmiennych w jednym wyrażeniu, co skutkuje bardziej zwięzłym, czytelnym i bezpieczniejszym kodem. Wiązanie struktury za pomocą modyfikatorów usprawnia proces zmiany wartości w obiektach strukturalnych.