C ++ stdcopy

C ++ stdcopy
“Quando as posições de início e final da fonte forem especificadas, todos os itens nesse intervalo serão copiados para o destino especificado. O C ++ STL fornece várias variantes de cópia () que permitem que as operações de cópia sejam realizadas de várias maneiras, cada uma com um uso exclusivo. Todos estes são descritos no cabeçalho do algoritmo. Essas funções são explicadas neste artigo para uso em programação regular.”

Exemplo 1: Usando o método copy () e copy_n ()

copy (start_iter1, end_iter1, start_iter2):A função de cópia geral, copy (strat_iter1, end_iter, start_iter2), é usada para mover um cluster de um contêiner para outro. Precisa de três argumentos:

Start Iter1: O ponto de partida para copiar elementos é indicado pelo ponteiro inicial, que aponta para o início do contêiner de origem.

final ITER: O dispositivo apontador para o final do contêiner de origem, do qual os elementos devem ser copiados.

Iniciar o ITER2: a referência ao início do contêiner de destino, do qual os elementos devem ser copiados.

copy_n (start_iter1, num, start_iter2): O número de componentes que devem ser copiados no contêiner de destino pode ser determinado usando este método de cópia. Além disso, aceita os três argumentos a seguir:

Start Iter1: O identificador para o início do contêiner de origem, do qual os elementos devem ser copiados.

NUM: Um número inteiro indicando o número de números a serem transferidos para o contêiner de destino, começando com o start iter1. Quando um número negativo é fornecido, nada acontece.

Iniciar o ITER2: o ponto de partida do contêiner de destino, identificado pelo endereço inicial do endereço, é onde os itens devem começar a copiar.

O código para esta ilustração está anexado na captura de tela afixada.

No exemplo aqui, incluímos três principais bibliotecas de C++. Este algoritmo de biblioteca desempenha um papel vital neste programa, pois fornece acesso à função de cópia std ::. Em seguida, usamos o namespace std no programa. A declaração de uso de namespace simplesmente indica que todos os objetos no espaço para nome de STD devem estar disponíveis no escopo onde está presente sem exigir o prefixo std ::.

Depois disso, temos um método principal do programa no qual declaramos uma variável "VEC_1" de uma classe vetorial e a inicializamos com o conjunto de valores numéricos. Também definimos outras duas variáveis ​​como "vec_2" e "vec_3". Declaramos essas variáveis ​​com os vetores de destino. Em seguida, implantamos o método copy (), que leva três argumentos “VEC_1.BEGIN "," VECT_1.fim "e o" vect_2.começar ”para copiar os dois primeiros valores dos vetores.

Para imprimir os vetores copiados, utilizamos o loop for, que pedalou sobre cada elemento vetorial copiado e exibimos os elementos vetoriais. Em seguida, usamos o método copy_n (), que exibirá os cinco primeiros elementos dos vetores. Para impressão, os elementos vetoriais copiados para loop são utilizados como acima.

A saída gerada pelo método copy () e copy_n () é a seguinte:

Exemplo 2: Usando o método copy_if () e copy_backward ()

copy_if (): Conforme implícito pelo nome, essa função copia de acordo com o resultado de uma “condição.”Isso é dado com a ajuda de uma função que oferece um valor booleano como o quarto argumento. Esta função requer quatro argumentos, três dos quais são idênticos aos de copy () e uma função adicional que, se retornar verdadeiro, determina se um número é ou não duplicado.

copy_backward (): Ao usar esta função, os itens são copiados para o contêiner de destino para trás até que todos os números não tenham sido copiados. Start_iter2 é onde o processo de cópia começa, mas prossegue para trás. Ele usa as mesmas defesas que uma cópia () também.

O código para esta ilustração está anexado na captura de tela afixada.

Na primeira etapa deste programa, inserimos nossas bibliotecas para buscar as funções C ++. Em seguida, declaramos o vetor como V1 e inicializamos o vetor com os números inteiros. Declaramos outras variáveis ​​como V2 e V3, que são os vetores de destino. Depois disso, temos a função copy_if () que apenas copia os números ímpares dos vetores. Em seguida, a cópia para trás () é usada para copiar os três primeiros elementos, com a quarta posição final. Imprimimos os elementos vetoriais copiados com a ajuda do loop.

A saída gerada pelo método copy_if () e copy_backward () é o seguinte:

Exemplo 3: Usando o método inserter ()

Vamos entender a sintaxe inserter () antes de executar a ação copy ().

# copy (strat_iter1, end_iter1, inserter (contêiner & x, contêiner de tipo de tipo :: iterator it));

Utilizamos inserter () como o destino para o qual desejamos transferir os elementos do contêiner. O inserter () precisa de duas entradas. O primeiro é um contêiner do tipo arbitrário, enquanto o segundo é um iterador dentro do contêiner.

Ele devolve uma instância de iterador de inserção que está atualmente funcionando com qualquer tipo de contêiner. Usando esta função de wrapper, inserir instâncias do iterador pode ser criado. Pode ser difícil e dificultar a programação genérica de ter que conhecer todo o tipo todo do contêiner ao digitar o nome do percentual de iterador. Ao usar esta função, você pode se beneficiar da dedução do parâmetro de modelo automático e fazer com que o compilador corresponda automaticamente aos tipos certos para você.

O código para esta ilustração está anexado na captura de tela afixada.

Aqui, começamos com nosso método principal. Dentro dele, declaramos o vetor V1 e definimos os vetores com os valores numéricos. Do iterador C ++, criamos o objeto "ITR". Além disso, declaramos outra variável, v2, em nosso programa. Em seguida, invocamos o inserto () dentro da função de cópia, que copia os elementos do vetor através da iteração. No final, temos o loop for, que imprimirá os elementos copiados dos vetores especificados.

A saída gerada pelo método inserter () é a seguinte:

Conclusão

No artigo, discutimos o std :: cópia funções que o C ++ suporta. Quatro métodos são demonstrados com a sintaxe e o programa de exemplo. Os parâmetros e funções de cada abordagem diferem. Essas técnicas são acessíveis no arquivo de cabeçalho para o algoritmo.