La copia di un vettore è il processo di creazione di un nuovo vettore che contiene gli stessi elementi del vettore originale. In questo articolo impareremo diversi modi per copiare un vettore in C++.
Il metodo più efficiente e semplice per copiare un vettore in C++ è utilizzare operatore di assegnazione (=) . Diamo un’occhiata a un esempio:
C++
#include using namespace std; int main() { vector<int> v1 = {2 4 1 5 3}; // Assigning the vector v1 to vector v2 vector<int> v2 = v1; for (auto i : v2) cout << i << ' '; return 0; }
Produzione
2 4 1 5 3
C++ fornisce inoltre più metodi per copiare un vettore in un altro vettore. Sono i seguenti:
Sommario
- Utilizzo del costruttore vettoriale
- Usando copia()
- Utilizzo dell'assegnazione vettoriale()
- Utilizzando l'inserimento vettoriale()
- Utilizzando il vettore push_back()
Utilizzo del costruttore vettoriale
Un altro modo semplice per copiare un vettore al momento della dichiarazione è passare il vettore originale al costruttore di copia di un altro vettore.
C++
#include using namespace std; int main() { vector<int> v1 = {2 4 1 5 3}; // Copying vector v1 into vector v2 vector<int> v2(v1); for (auto i : v2) cout << i << ' '; return 0; }
Produzione
2 4 1 5 3
Usando copia()
IL copia() La funzione è il nostro metodo preferito per copiare i dati in C++. Può copiare un vettore in un altro utilizzando i relativi iteratori. Inoltre il copia_se() una variante di questa funzione può anche eseguire una copia selettiva sulla base di una funzione predicativa unaria.
C++#include using namespace std; int main() { vector<int> v1 = {2 4 1 5 3}; vector<int> v2; // Copying vector v1 into vector v2 copy(v1.begin() v1.end() back_inserter(v2)); for (auto i : v2) cout << i << ' '; return 0; }
Produzione
2 4 1 5 3
Spiegazione: Dobbiamo usare back_insertor() funzione se non abbiamo specificato la dimensione del vettore durante la dichiarazione. Se abbiamo già avuto abbastanza spazio allora dobbiamo passare v2.begin() Invece.
Utilizzo dell'assegnazione vettoriale()
IL assegnazione vettore() Il metodo è equivalente al metodo dell'operatore = ma necessita della copia dell'iteratore del vettore.
C++
#include using namespace std; int main() { vector<int> v1 = {2 4 1 5 3}; vector<int> v2; // Copying the vector v1 into vector v v2.assign(v1.begin() v1.end()); for (auto i : v2) cout << i << ' '; return 0; }
Produzione
2 4 1 5 3
Utilizzando l'inserimento vettoriale()
IL inserimento vettore() Il metodo fornisce una versione in grado di copiare tutti gli elementi dall'intervallo specificato. Questo può essere usato per copiare l'intero vettore in un altro in modo simile al metodoassign().
C++#include using namespace std; int main() { vector<int> v1 = {2 4 1 5 3}; vector<int> v2; // Copying vector v1 into vector v2 v2.insert(v2.begin() v1.begin() v1.end()); for (auto i : v2) cout << i << ' '; return 0; }
Produzione
2 4 1 5 3
Utilizzando Vector push_back()
Spingi tutti gli elementi del primo vettore nel secondo vettore utilizzando vettore push_back() metodo. Un ciclo può consistere nell'iterare il primo vettore.
C++#include using namespace std; int main() { vector<int> v1 = {2 4 1 5 3}; vector<int> v2; // Copying vector v1 into vector v2 for (auto i : v1) v2.push_back(i); for (auto i : v2) cout << i << ' '; return 0; }
Produzione
2 4 1 5 3
Questo metodo fornisce un maggiore controllo poiché possiamo anche modificare l'elemento, se necessario, prima di copiarlo.