Структурно обвързване в C++

Strukturno Obv Rzvane V C



Обвързването на структура ви позволява да извличате елементите от структура или клас и да ги присвоявате на различни променливи, без да имате достъп до всеки член поотделно. Структурното обвързване се използва за премахване на необходимостта от ръчно извличане на елементи и подобрява четливостта и стегнатостта на кода, като позволява едновременното разопаковане на множество елементи от структура или клас в различни променливи. В този урок ще обсъдим работа, синтаксис и примери за структурно обвързване в C++.

Какво е структурирано обвързване в C++?

Структурното обвързване е функция на C++, която беше добавена в C++17, която също така позволява разлагането на структура или кортеж на отделни променливи, подобрявайки стегнатостта на кода. Може да се използва за улесняване на синтаксиса за достъп до членовете на структурата и намаляване на възможността за грешки, причинени от правописни грешки или неправилно индексиране.

Синтаксис







Синтаксисът на структурното обвързване в C++ е както следва:



Автоматичен [ var1 , var2 , ... ] = изразяване ;

В синтаксиса за структурно обвързване в C++, където „var1“ и „var2“ са имена на променливи, а „expression“ е израз, който дава структура или клас. Ние използваме автоматични ключови думи, за да декларираме променливи, които се създават автоматично.



Модификатори

Модификаторите могат да се използват в комбинация със структурирани обвързвания. Техният синтаксис е споменат по-долу:





Автоматичен и [ а , b , ° С , ... ] = изразяване ;

Автоматичен && [ а , b , ° С , ... ] = изразяване ;

Операторът “&” или “&&”, използван в декларацията, определя дали обвързването е препратка към lvalue или rvalue. Препратка към lvalue, представена от '&', установява препратка, която може да се използва за промяна на стойностите на обвързващите променливи. Промените в стойностите, направени с помощта на препратката, ще се видят в оригиналната структура или кортеж.

Препратката към rvalue, представена от „&&“, от друга страна, осигурява препратка, която е ограничена до използване за четене на стойността на променливите, включени в обвързването. Той е удобен за обвързване към преходни обекти или rvalues, които трябва да бъдат унищожени, тъй като избягва създаването на реплика на обекта, това може да отнеме памет и време.



Пример 1: Структурно обвързване в C++

Следното е пример за обвързване на структура на C++:

#include

използване на пространство от имена std ;

структура куб

{

вътр х ;

вътр и ;

вътр с ;

} ;

вътр основен ( )

{

c-куб = { 10 , двадесет , 30 } ;

Автоматичен [ x_координата , y_координата , z_координата ] = ° С ;

cout << 'Ос X: ' << x_координата << endl ;

cout << 'Y-ос: ' << y_координата << endl ;

cout << 'Ос Z:' << z_координата << endl ;

връщане 0 ;

}

В горния пример ние декларираме структурен куб с три цели числа x, y и z. Структурата показва куб в пространството. Създава се променлива c от тип cube и се инициализира със стойности (10,20,30). В тази структура на кода обвързването присвоява стойности на членовете x, y и z на struct на отделните променливи x_coordinate, y_coordinate, z_coordinate съответно чрез използване на синтаксис auto[ x_coordinate, y_coordinate, z_coordinate] = c. Резултатът от горното е показан по-долу:

Пример 2: Свързване на структура в C++ за разопаковане на структура

Следва пример за обвързване на структура за разопаковане на структура:

#include

#include <низ>

използване на пространство от имена std ;

структура Студент {

име на низ ;

вътр възраст ;

} ;

вътр основен ( ) {

Ученик с { 'Хамза' , 32 } ;

Автоматичен [ име , възраст ] = с ;

cout << име << 'е' << възраст << 'на години.' << endl ;

връщане 0 ;

}

В горния код структура Student има два члена: a име това е низ и an възраст това е цяло число. След това създаваме обекта Student и присвояваме начални стойности на всеки от неговите членове. След това членовете на s се разделят на името и възрастта на променливата с помощта на структурно обвързване и след това тези стойности се отпечатват, както е на екранната снимка по-долу:

Пример 3: Обвързване на структура в C++ с модификатори

По-долу е даден пример за структурно обвързване, което използва модификатор за актуализиране на стойността на променлива като num1 и num2:

#include

#include <кортеж>

използване на пространство от имена std ;

вътр основен ( ) {

кортеж < вътр , вътр > T { 25 , двадесет } ;

Автоматичен и [ номер1 , бр.2 ] = T ;

cout << 'Стойността на num1 = ' << номер1 << ', num2 = ' << бр.2 << ' ' ;

номер1 = 30 ;

cout << 'Променената стойност на num1 = ' << номер1 << ', num2 = ' << бр.2 <<

' ' ;

Автоматичен && [ номер3 , бр.4 ] = make_tuple ( 100 , 250 ) ;

cout << 'Сега стойността на num3 = ' << номер3 << ', num4 = ' << бр.4 << ' ' ;

връщане 0 ;

}

В предходния код изграждаме кортеж t и използваме препратката lvalue, за да свържем неговите компоненти с num1 и num2. След това променяме стойността на num1 на 30 и извеждаме стойностите num1 и num2. Също така изградете временен кортеж чрез make_tuple(100, 250) и използвайте препратка към rvalue, за да свържете елементите му с num3 и num4. След това стойностите на num3 и num4 се отпечатват, тъй като num3 и num4 са свързани с препратка към rvalue, те не могат да се използват за промяна на временния кортеж, образуван от make_tuple(100, 250). Те са способни само да четат от него. Когато изпълните програмата, на екрана ще се покаже следният резултат:

Заключение

Структурното обвързване е функция в C++, която разопакова множество стойности на структура или клас в отделни променливи в един израз, което води до по-сбит, четим и по-безопасен код. Структурното обвързване с помощта на модификатори рационализира процеса на промяна на стойности в рамките на структурирани обекти.