Связывание структуры в C++

Svazyvanie Struktury V C



Привязка структуры позволяет извлекать элементы из структуры или класса и назначать их различным переменным, не имея доступа к каждому члену в отдельности. Связывание структур используется для устранения необходимости ручного извлечения элементов и повышает удобочитаемость и лаконичность кода, позволяя одновременно распаковывать многочисленные элементы структуры или класса в отдельные переменные. В этом руководстве мы обсудим работу, синтаксис и примеры привязки структур в C++.

Что такое структурированное связывание в C++?

Связывание структур — это функция C++, добавленная в C++17, которая также позволяет разбивать структуру или кортеж на отдельные переменные, повышая лаконичность кода. Его можно использовать для упрощения синтаксиса доступа к элементам структуры и снижения вероятности ошибок, вызванных опечатками или неправильным индексированием.

Синтаксис







Синтаксис привязки структуры в C++ следующий:



авто [ переменная1 , переменная2 , ... ] '=' выражение ;

В синтаксисе привязки структуры в C++, где «var1» и «var2» — это имена переменных, а «выражение» — это выражение, которое дает структуру или класс. Мы используем ключевые слова auto для объявления автоматически создаваемых переменных.



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

Модификаторы можно использовать в сочетании со структурированными привязками. Их синтаксис упомянут ниже:





авто & [ а , б , с , ... ] '=' выражение ;

авто && [ а , б , с , ... ] '=' выражение ;

Оператор «&» или «&&», используемый в объявлении, определяет, является ли привязка ссылкой на lvalue или rvalue. Ссылка lvalue, представленная знаком «&», устанавливает ссылку, которую можно использовать для изменения значений переменных привязки. Изменения значений, сделанные с использованием ссылки, будут видны в исходной структуре или кортеже.

Ссылка rvalue, представленная «&&», с другой стороны, предоставляет ссылку, которая ограничена использованием для чтения значения переменных, включенных в привязку. Это удобно для привязки к временным объектам или значениям r, которые необходимо уничтожить, поскольку это позволяет избежать создания реплики объекта, что может занимать много памяти и времени.



Пример 1. Связывание структуры в C++

Ниже приведен пример привязки структуры C++:

#include <бит/stdc++.h>

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

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

{

инт Икс ;

инт и ;

инт С ;

} ;

инт основной ( )

{

с-куб '=' { 10 , двадцать , 30 } ;

авто [ x_координата , у_координата , z_координата ] '=' с ;

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

cout << «Ось Y:» << у_координата << конец ;

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

возвращаться 0 ;

}

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

Пример 2. Связывание структуры в C++ для распаковки структуры

Ниже приведен пример привязки структуры для распаковки структуры:

#include <иопоток>

#include <строка>

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

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

имя строки ;

инт возраст ;

} ;

инт основной ( ) {

Студенты { 'Хамза' , 32 } ;

авто [ имя , возраст ] '=' с ;

cout << имя << ' является ' << возраст << ' лет.' << конец ;

возвращаться 0 ;

}

В приведенном выше коде структура Student имеет два члена: имя это строка и возраст это целое число. Затем мы создаем объект Student и присваиваем начальные значения каждому из его членов. Члены s затем разделяются на имя переменной и возраст с помощью структурной привязки, и эти значения затем печатаются, как показано на снимке экрана ниже:

Пример 3. Связывание структуры в C++ с модификаторами

Ниже приведен пример привязки структуры, в которой используется модификатор для обновления значения переменной как num1 и num2:

#include <иопоток>

#include <кортеж>

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

инт основной ( ) {

кортеж < инт , инт > т { 25 , двадцать } ;

авто & [ число1 , число2 ] '=' т ;

cout << 'Значение num1 = ' << число1 << ', число2 = ' << число2 << ' \n ' ;

число1 '=' 30 ;

cout << 'Измененное значение num1 = ' << число1 << ', число2 = ' << число2 <<

' \n ' ;

авто && [ номер3 , число4 ] '=' make_tuple ( 100 , 250 ) ;

cout << 'Теперь значение num3 = ' << номер3 << ', число4 = ' << число4 << ' \n ' ;

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