¿Qué es el enlace estructurado en C++?
El enlace de estructura es una función de C++ que se agregó en C++17 y que también permite la descomposición de una estructura o tupla en variables individuales, lo que mejora la concisión del código. Se puede usar para simplificar la sintaxis de acceso a los miembros de la estructura y reducir la posibilidad de errores provocados por errores tipográficos o indexación incorrecta.
Sintaxis
La sintaxis del enlace de estructura en C++ es la siguiente:
auto [ var1 , var2 , ... ] = expresión ;
En la sintaxis para el enlace de estructuras en C++, donde 'var1' y 'var2' son nombres de variables y 'expresión' es una expresión que produce una estructura o clase. Usamos palabras clave automáticas para declarar variables que se crean automáticamente.
Modificadores
Los modificadores se pueden usar en combinación con enlaces estructurados. Su sintaxis se menciona a continuación:
auto & [ a , b , C , ... ] = expresión ;
auto && [ a , b , C , ... ] = expresión ;
El operador '&' o '&&' utilizado en la declaración define si el enlace es una referencia de valor l o valor r. Una referencia de lvalue representada por '&' establece una referencia que se puede usar para cambiar los valores de las variables de vinculación. Los cambios en los valores realizados utilizando la referencia se verán en la estructura o tupla original.
La referencia rvalue representada por “&&”, por el contrario, proporciona una referencia que se limita a ser utilizada para leer el valor de las variables incluidas en el enlace. Es útil para vincular objetos transitorios o valores que deben destruirse, ya que evita hacer una réplica del objeto, esto puede consumir memoria y mucho tiempo.
Ejemplo 1: enlace de estructura en C++
El siguiente es un ejemplo de enlace de estructura C++:
#incluyeusando el espacio de nombres estándar ;
estructura cubo
{
En t X ;
En t y ;
En t Con ;
} ;
En t principal ( )
{
c-cubo = { 10 , 20 , 30 } ;
auto [ coordenada_x , y_coordinate , coordenada_z ] = C ;
cout << 'Eje X:' << coordenada_x << final ;
cout << 'Y axis : ' << y_coordinate << final ;
cout << 'Eje Z : ' << coordenada_z << final ;
devolver 0 ;
}
En el ejemplo anterior, declaramos una estructura de cubo con tres enteros x, y y z. La estructura muestra un cubo en el espacio. Se crea una variable c de tipo cubo y se inicializa con valores (10,20,30). En esta estructura de código, el enlace asigna valores de los miembros x, y y z de struct a las variables individuales x_coordinate, y_coordinate, z_coordinate respectivamente usando la sintaxis auto[ x_coordinate, y_coordinate, z_coordinate ] = c. La salida de lo anterior se muestra a continuación:
Ejemplo 2: enlace de estructura en C++ para desempaquetar una estructura
El siguiente es un ejemplo de enlace de estructura de desempaquetar una estructura:
#incluir#incluir
usando el espacio de nombres estándar ;
estructura Alumno {
nombre de cadena ;
En t edad ;
} ;
En t principal ( ) {
Estudiantes { 'Hamza' , 32 } ;
auto [ nombre , edad ] = s ;
cout << nombre << ' es ' << edad << 'años'. << final ;
devolver 0 ;
}
En el código anterior, una estructura Student tiene dos miembros: un nombre que es una cadena y un edad eso es un entero Luego, creamos el objeto Student y asignamos valores iniciales a cada uno de sus miembros. Luego, los miembros de s se separan en el nombre de la variable y la edad mediante el enlace estructural, y estos valores se imprimen como en la siguiente captura de pantalla:
Ejemplo 3: enlace de estructura en C++ con modificadores
A continuación se muestra un ejemplo de enlace de estructura que utiliza un modificador para actualizar el valor de una variable como num1 y num2:
#incluir#incluye
usando el espacio de nombres estándar ;
En t principal ( ) {
tupla < En t , En t > t { 25 , 20 } ;
auto & [ numero1 , numero2 ] = t ;
cout << 'El valor de num1 = ' << numero1 << ', numero2 = ' << numero2 << ' \norte ' ;
numero1 = 30 ;
cout << 'El valor cambiado de num1 = ' << numero1 << ', numero2 = ' << numero2 <<
' \norte ' ;
auto && [ numero 3 , número4 ] = hacer_tupla ( 100 , 250 ) ;
cout << 'Ahora el valor de num3 = ' << numero 3 << ', numero4 = ' << número4 << ' \norte ' ;
devolver 0 ;
}
En el código anterior, construimos una tupla t y usamos la referencia lvalue para vincular sus componentes a num1 y num2. Luego cambiamos el valor de num1 a 30 y generamos los valores num1 y num2. También cree una tupla temporal a través de make_tuple(100, 250) y use una referencia rvalue para vincular sus elementos a num3 y num4. Luego, los valores de num3 y num4 se imprimen porque num3 y num4 están acoplados con una referencia de valor r, no se pueden usar para cambiar la tupla temporal formada por make_tuple(100, 250). Solo son capaces de leer de él. Cuando ejecute el programa, el siguiente resultado se mostrará en la pantalla:
Conclusión
El enlace de estructura es una característica de C++ que desempaqueta múltiples valores de una estructura o clase en variables individuales en una sola expresión, lo que da como resultado un código más conciso, legible y seguro. La vinculación de estructuras mediante modificadores agiliza el proceso de cambio de valores dentro de objetos estructurados.