Troca de padrão C++

Troca De Padrao C



“Swapping é o ato de trocar duas ou mais coisas. Os dados entre duas variáveis ​​na programação podem ser trocados. A troca de coisas entre duas pessoas é possível na vida real. Qualquer valor de dois objetos pode ser trocado usando a função de biblioteca padrão swap() em C++. Ele foi colocado sob o cabeçalho “utility” em C11. A função swap() em C++ tem uma complexidade de N para arrays porque cada elemento deve ser trocado individualmente, enquanto a dificuldade da função para constantes é constante. A função swap() lança um aviso ou erro se algum dos elementos variáveis ​​falhar. Veja a assinatura da função para std::swap() abaixo:

Sintaxe:

modelo < classe T > vazio troca ( T & variável_1 , T & variável_2 ) ;

Tanto o valor da primeira variável quanto a segunda variável, ambos os quais armazenam valores, devem ser trocados. A função apenas troca os valores das variáveis; não tem saída.”







Funcionamento da função swap() em C++

A função de troca é implementada em C++ usando as três linhas a seguir.



Modelo vazio troca ( T & eu , T & j ) {
T temp = padrão :: jogada ( eu ) ;
eu = padrão :: jogada ( j ) ;
j = padrão :: jogada ( temperatura ) ;
}

A declaração “T temp = std::move(i)”; faz uma cópia do elemento “i” e o duplica. Aqui, “i = std::move(j)”; descarta os itens originais de “i” e armazena a cópia “i” de “j” no lugar do original “j”. A fórmula “j = std:: move(temp)”; salve “i” com um clone de temp e remova o conteúdo idêntico de temp. Além disso, exclua a variável temporária após a conclusão da execução da função swap().



Exemplo 1: Programa usando o método std::move para trocar

Conforme demonstrado abaixo, podemos trocar dois objetos usando o recurso std::move do C++11.





#include

#include



modelo
vazio troca ( T & uma , T & b )
{
T temp = padrão :: jogada ( uma ) ;
uma = padrão :: jogada ( b ) ;
b = padrão :: jogada ( temperatura ) ;
}
int a Principal ( )
{
padrão :: vetor Lista = { 10 , 12 , 13 , quinze , 16 , 17 } ;
int eu = 3 , j = 5 ;
troca ( Lista [ eu ] , Lista [ j ] ) ;
por ( int eu : Lista ) {
padrão :: cout << eu << ' ' ;
}
Retorna 0 ; }

Temos uma declaração de template que possui um objeto “T”. Depois disso, estabelecemos a função como “swap”. A função recebe os dois parâmetros &a e &b, do tipo “T”. Como resultado dos argumentos T& a, T& b referenciando ou armazenando o endereço da variável passada e aplicando diretamente a eles sem retornar, a função swap(T& a, T& b) é chamada de chamada por referência.



Dentro do void swap, aplicamos o algoritmo de swap usando o método std::move. Em seguida, construímos o main’s do programa. Aqui, declaramos a variável “list” e a inicializamos com a lista de valores numéricos. Definimos os valores para “i” e “j” para troca. O valor numérico localizado no segundo índice foi substituído pelo valor numérico no quinto índice. Em seguida, chamamos a função de troca e passamos os índices “i” e “j” para ela para troca. O loop for é usado para imprimir a lista trocada.

A saída exibiu a lista modificada. Você pode observar que a nova lista gerada trocou o valor de acordo com os índices especificados.

Exemplo 2: Programa usando o método std::swap para trocar

Utilizar o mecanismo std::swap encontrado no cabeçalho do utilitário (em C++11) é a correção usual. Os valores de dois objetos são trocados para fazê-lo funcionar.

#include

#include

#include



int a Principal ( )
{
padrão :: vetorarr = { 3 , 6 , 9 , quinze , 13 } ;
int eu = 3 , j = 4 ;

padrão :: troca ( arr [ eu ] , arr [ j ] ) ;

por ( int eu : arr ) {
padrão :: cout << eu << ' ' ;
}

Retorna 0 ;
}

Importando o arquivo de cabeçalho , podemos acessar a função swap em nosso programa. Aqui, incluímos o arquivo de cabeçalho com duas bibliotecas mais importantes. Em seguida, estabelecemos o método int main. Dentro do main do programa, declaramos o vetor criando a variável “arr”. A variável “arr” é inicializada com os cinco elementos do inteiro. As posições do índice são atribuídas a “i” e “j” para troca. As variáveis ​​“i” e “j” são então passadas para o método std::swap para a troca do valor do índice especificado. Com o loop for, imprimimos os arrays trocados.

A lista obtida após a operação de troca usando o método std::swap é exibida da seguinte forma:

Exemplo 3: Programa usando o método std::iter_swap para trocar

O uso do algoritmo std::iter_swap, que está listado no cabeçalho do algoritmo, é uma opção adicional. A maneira como ele opera é alternando os valores dos objetos para os quais os iteradores fornecidos apontam.

#include

#include

#include

#include



int a Principal ( )
{
padrão :: vectorvec = { 64 , 61 , 62 , 63 , 60 } ;
int eu = 0 , j = 4 ;
auto itr1 = padrão :: próximo ( uma coisa. começar ( ) , eu ) ;
auto itr2 = padrão :: próximo ( uma coisa. começar ( ) , j ) ;

padrão :: iter_swap ( itr1 , itr2 ) ;
por ( int eu : uma coisa ) {
padrão :: cout << eu << ' ' ;
}
Retorna 0 ;
}

Para o método principal do programa, declaramos uma variável vetorial “vec” e atribuímos a ela uma lista vetorial de números. Em seguida, especificamos a posição do índice para as variáveis ​​“i” e “j”. O método std::iter_swap é chamado e recebe o iter1 e o iter2 como argumento. O iter1 e o iter2 são declarados com a palavra-chave auto e possuem a operação de iteração. O método de loop for imprime os valores trocados da matriz de vetores na execução.

O método std::iter_swap trocou com sucesso os valores dos vetores especificados.

Exemplo 4: Programa de Uso Sem Variáveis ​​Temporárias para Trocar

Este exemplo mostra uma nova maneira de trocar números em código C++ sem o uso de variáveis ​​temporárias.

#include

usando namespace std ;

int a Principal ( )
{
int x1 = dois , x2 = 12 ;
cout << 'Antes de trocar.' << fim ;
cout << 'x1 = ' << x1 << ', x2 = ' << x2 << fim ;

x1 = x1 + x2 ;
x2 = x1 - x2 ;
x1 = x1 * x2 ;

cout << ' \n Após a troca.' << fim ;
cout << 'x1 = ' << x1 << ', x2 = ' << x2 << fim ;

Retorna 0 ; }

Vamos examinar o funcionamento deste programa. Aqui, declaramos x1 e x2, que são inicialmente definidos com o número, respectivamente. Então, usando a fórmula x1 = x1+x2, adicionamos x1 e x2 e colocamos o resultado em x1. Isso indica que x1 é igual a 2 mais 12. Portanto, agora é igual a 14. Então, aplicamos a fórmula x2 = x1 – x2. Isso indica que x2 = 14 – 12. Portanto, x2 agora é igual a 2. Mais uma vez, aplicamos a fórmula x1 = x1 – x2. Isso indica que x1 = 14 – 2. Portanto, x1 = 12 no final. Como resultado, os números foram trocados.

O número trocado antes e depois é exibido na tela de prompt a seguir.

Conclusão

Aqui, passamos por uma descrição completa de swap() em C++, seu uso e alguns exemplos que mostram como ele funciona. Usando a função std:: swap(), os valores de duas variáveis ​​podem ser trocados. O C++ STL inclui uma função interna chamada std::swap(). As chamadas de função swap(T& variável 1, T& variável 2) por referência e as sobrecargas de C++ swap() dependendo do tipo de variáveis ​​de dados também são explicadas neste tutorial.