C ++ stdcopy

C ++ stdcopy
“Quando vengono specificate le posizioni di inizio e finitura della fonte, tutti gli articoli di questo intervallo verranno copiati nella destinazione specificata. C ++ STL fornisce diverse varianti di copia () che consentono di eseguire le operazioni di copia in vari modi, ciascuno con un uso unico. Tutti questi sono descritti nell'intestazione dell'algoritmo. Queste funzioni sono spiegate in questo articolo per l'uso nella programmazione regolare."

Esempio 1: utilizzando il metodo copy () e copy_n ()

Copia (start_iter1, end_iter1, start_iter2):La funzione di copia generale, copia (strat_iter1, end_iter, start_iter2), viene utilizzata per spostare un cluster da un contenitore a un altro. Ha bisogno di tre argomenti:

Avvia ITER1: il punto di partenza per la copia degli elementi è indicato dal puntatore Avvia iter, che indica l'inizio del contenitore di origine.

FINE ITER: il dispositivo di puntamento verso l'estremità del contenitore di origine, da cui gli elementi devono essere copiati.

ITER2 Avvia: il riferimento all'inizio del contenitore target, da cui gli elementi devono essere copiati.

copy_n (start_iter1, num, start_iter2): Il numero di componenti che devono essere copiati nel contenitore target può essere determinato usando questo metodo di copia. Inoltre, accetta i seguenti tre argomenti:

ITER1 AVVIO: l'identificatore per l'inizio del contenitore di origine, da cui gli elementi devono essere copiati.

Num: un numero intero che indica il numero di numeri da trasferire al contenitore di destinazione, a partire da avvio ITER1. Quando viene fornito un numero negativo, non succede nulla.

Avviare ITER2: il punto di partenza del contenitore di destinazione, identificato dall'indirizzo avvio iter, è dove gli articoli devono iniziare a copiare.

Il codice per questa illustrazione è allegato nello screenshot apposto.

Nell'esempio qui, abbiamo incluso tre biblioteche principali di C++. Questo algoritmo della biblioteca svolge un ruolo vitale in questo programma in quanto fornisce l'accesso alla funzione Copia STD ::. Quindi, abbiamo usato lo spazio dei nomi nel programma. La dichiarazione di spazio usando i nomi indica semplicemente che tutti gli oggetti nello spazio dei nomi STD dovrebbero essere disponibili nell'ambito in cui è presente senza richiedere il prefisso STD ::.

Successivamente, abbiamo un metodo principale del programma all'interno del quale abbiamo dichiarato una variabile "vec_1" di una classe vettoria. Abbiamo anche definito altre due variabili come "vec_2" e "vec_3". Abbiamo dichiarato queste variabili con i vettori di destinazione. Quindi, abbiamo distribuito il metodo Copy (), che prende tre argomenti “VEC_1.Inizia "," vect_1.fine "e" vect_2.Inizia "per copiare i primi due valori dei vettori.

Per stampare i vettori copiati, abbiamo utilizzato il ciclo per il ciclo, che ha pedalato su ciascun elemento vettoriale copiato e visualizzato gli elementi vettoriali. Successivamente, abbiamo usato il metodo COPY_N (), che visualizzerà i primi cinque elementi dei vettori. Per la stampa, gli elementi vettoriali copiati per loop sono utilizzati come sopra.

L'output generato dal metodo Copy () e Copy_n () è il seguente:

Esempio 2: utilizzando il metodo COPY_IF () e COPY_Backward ()

copy_if (): come implicito dal nome, questa funzione copia in conformità con il risultato di una "condizione."Questo è dato con l'aiuto di una funzione che offre un valore booleano come quarto argomento. Questa funzione richiede quattro argomenti, tre dei quali sono identici a quelli in copia () e una funzione aggiuntiva che, se restituisce vero, determina se un numero è duplicato o meno.

copy_backward (): quando si utilizzano questa funzione, gli elementi vengono copiati nel contenitore target all'indietro fino a quando tutti i numeri non sono stati copiati. Start_iter2 è dove inizia il processo di copia, ma procede all'indietro. Utilizza anche le stesse difese di una copia ().

Il codice per questa illustrazione è allegato nello screenshot apposto.

Nel primo passo di questo programma, abbiamo inserito le nostre librerie per recuperare le funzioni C ++. Quindi, dichiariamo il vettore come V1 e inizializziamo il vettore con i numeri interi. Abbiamo dichiarato altre variabili come V2 e V3, che sono i vettori di destinazione. Successivamente, abbiamo la funzione copy_if () che copia solo i numeri dispari dai vettori. Successivamente, la copia all'indietro () viene utilizzata per copiare i primi tre elementi, con la quarta posizione finale. Abbiamo stampato gli elementi vettoriali copiati con l'aiuto di loop.

L'output generato dal metodo copy_if () e copy_backward () è il seguente:

Esempio 3: usando il metodo inserter ()

Affermiamo la sintassi inserter () prima di eseguire l'azione Copy ().

# copia (strat_iter1, end_iter1, inserter (contenitore e x, container da tillame :: iterator it));

Utilizziamo inserter () come destinazione a cui desideriamo trasferire gli elementi del contenitore. L'inserter () necessita di due input. Il primo è un contenitore di tipo arbitrario, mentre il secondo è un iteratore all'interno del contenitore.

Regala un'istanza di insert iterator che attualmente funziona con qualsiasi tipo di contenitore. Utilizzando questa funzione wrapper, è possibile creare istanze di iteratore. Può essere difficile e ostacolare la programmazione generica dal dover conoscere l'intero tipo esatto del contenitore quando si digita il nome dell'iteratore percentuale. Utilizzando questa funzione, è possibile beneficiare della detrazione dei parametri automatici del modello e far corrispondere automaticamente il compilatore i tipi giusti per te.

Il codice per questa illustrazione è allegato nello screenshot apposto.

Qui, abbiamo iniziato con il nostro metodo principale. Al suo interno, abbiamo dichiarato il vettore V1 e impostato i vettori con i valori numerici. Dall'iteratore C ++, abbiamo creato l'oggetto "ITR". Inoltre, abbiamo dichiarato un'altra variabile, V2, nel nostro programma. Quindi, abbiamo invocato l'inserto () all'interno della funzione di copia, che copia gli elementi vettoriali attraverso l'iterazione. Alla fine, abbiamo il ciclo for, che stamperà gli elementi copiati dei vettori specificati.

L'output generato dal metodo inserter () è il seguente:

Conclusione

Nell'articolo, abbiamo discusso delle funzioni STD :: Copy che C ++ supporta. Sono dimostrati quattro metodi con la sintassi e il programma di esempio. I parametri e le funzioni di ciascun approccio differiscono. Queste tecniche sono accessibili nel file di intestazione per l'algoritmo.