Ligação de estrutura em C++

Ligacao De Estrutura Em C



A associação de estrutura permite extrair os elementos de uma estrutura ou classe e atribuí-los a diferentes variáveis ​​sem ter acesso a cada membro separadamente. A associação de estrutura é usada para eliminar a necessidade de extração manual de elementos e melhora a legibilidade e a concisão do código, permitindo a descompactação simultânea de vários elementos de uma estrutura ou classe em variáveis ​​distintas. Neste tutorial, discutiremos o funcionamento, a sintaxe e exemplos de vinculação de estrutura em C++.

O que é ligação estruturada em C++?

A ligação de estrutura é um recurso C++ que foi adicionado em C++17 que também permite a decomposição de uma estrutura ou tupla em variáveis ​​individuais, melhorando a concisão do código. Ele pode ser usado para simplificar a sintaxe de acesso ao membro struct e reduzir a possibilidade de erros causados ​​por erros de digitação ou indexação incorreta.

Sintaxe







A sintaxe da ligação de estrutura em C++ é a seguinte:



auto [ var1 , var2 , ... ] = expressão ;

Na sintaxe para ligação de estrutura em C++, onde “var1” e “var2” são nomes de variáveis ​​e “expressão” é uma expressão que produz uma estrutura ou classe. Usamos palavras-chave automáticas para declarar variáveis ​​que são criadas automaticamente.



Modificadores

Modificadores podem ser usados ​​em pareamento com ligações estruturadas. Sua sintaxe é mencionada abaixo:





auto & [ a , b , c , ... ] = expressão ;

auto && [ a , b , c , ... ] = expressão ;

O operador “&” ou “&&” usado na declaração define se a ligação é uma referência lvalue ou rvalue. Uma referência lvalue representada por “&” estabelece uma referência que pode ser usada para alterar os valores das variáveis ​​vinculantes. Alterações nos valores feitas usando a referência serão vistas na estrutura ou tupla original.

Já a referência rvalue representada por “&&”, fornece uma referência que se limita a ser utilizada para leitura do valor das variáveis ​​incluídas no binding. É útil para vincular objetos transitórios ou rvalues ​​que precisam ser destruídos, pois evita fazer uma réplica do objeto, o que pode consumir memória e muito tempo.



Exemplo 1: ligação de estrutura em C++

Veja a seguir um exemplo de ligação de estrutura C++:

#include

usando namespace std ;

estrutura cubo

{

int x ;

int e ;

int Com ;

} ;

int principal ( )

{

c-cubo = { 10 , vinte , 30 } ;

auto [ x_coordenada , coordenada_y , z_coordenada ] = c ;

cout << 'Eixo X:' << x_coordenada << fim ;

cout << 'Eixo Y: ' << coordenada_y << fim ;

cout << 'Eixo Z: ' << z_coordenada << fim ;

retornar 0 ;

}

No exemplo acima, declaramos um cubo struct com três inteiros x, y e z. A estrutura mostra um cubo no espaço. Uma variável c do tipo cubo é criada e inicializada com valores (10,20,30). Nesta estrutura de código, a vinculação atribui valores dos membros x, y e z de struct às variáveis ​​individuais x_coordinate, y_coordinate, z_coordinate, respectivamente, usando a sintaxe auto[ x_coordinate, y_coordinate, z_coordinate ] = c. A saída do acima é mostrada abaixo:

Exemplo 2: ligação de estrutura em C++ para descompactar um Struct

A seguir está um exemplo de ligação de estrutura de desempacotamento de uma struct:

#include

#include

usando namespace std ;

estrutura Estudante {

nome da string ;

int idade ;

} ;

int principal ( ) {

Aluno { 'Hamza' , 32 } ;

auto [ nome , idade ] = s ;

cout << nome << ' é ' << idade << ' anos.' << fim ;

retornar 0 ;

}

No código acima, uma estrutura Aluno tem dois membros: um nome isso é uma string e um idade isso é um número inteiro. Em seguida, criamos o objeto Aluno e atribuímos valores iniciais a cada um de seus membros. Os membros de s são então separados no nome e idade da variável usando ligação estrutural, e esses valores são impressos como na captura de tela abaixo:

Exemplo 3: ligação de estrutura em C++ com modificadores

Abaixo está um exemplo de ligação de estrutura que faz uso de um modificador para atualizar o valor de uma variável como num1 e num2:

#include

#include

usando namespace std ;

int principal ( ) {

tupla < int , int > t { 25 , vinte } ;

auto & [ num1 , num2 ] = t ;

cout << 'O valor de num1 = ' << num1 << ', num2 = ' << num2 << ' \n ' ;

num1 = 30 ;

cout << 'O valor alterado de num1 = ' << num1 << ', num2 = ' << num2 <<

' \n ' ;

auto && [ número 3 , num4 ] = make_tuple ( 100 , 250 ) ;

cout << 'Agora o valor de num3 = ' << número 3 << ', num4 = ' << num4 << ' \n ' ;

retornar 0 ;

}

No código anterior, construímos uma tupla t e usamos a referência lvalue para vincular seus componentes a num1 e num2. Em seguida, alteramos o valor de num1 para 30 e exibimos os valores num1 e num2. Também construa uma tupla temporária via make_tuple(100, 250) e use uma referência rvalue para vincular seus elementos a num3 e num4. Os valores de num3 e num4 são impressos porque num3 e num4 são acoplados com uma referência de rvalue, eles não podem ser usados ​​para alterar a tupla temporária formada por make_tuple(100, 250). Eles só são capazes de ler a partir dele. Ao executar o programa, o seguinte resultado aparecerá na tela:

Conclusão

A associação de estrutura é um recurso em C++ que descompacta vários valores de uma estrutura ou classe em variáveis ​​individuais em uma única expressão, resultando em um código mais conciso, legível e seguro. A vinculação de estrutura usando modificadores agiliza o processo de alteração de valores em objetos estruturados.