Какво е структурирано обвързване в 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++, която разопакова множество стойности на структура или клас в отделни променливи в един израз, което води до по-сбит, четим и по-безопасен код. Структурното обвързване с помощта на модификатори рационализира процеса на промяна на стойности в рамките на структурирани обекти.