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