Cómo copiar elementos de un Array en un Vector en C++

Array

los mismos

Las siguientes son las diferentes formas de copiar elementos de una array a un vector:

Método 1: solución ingenua
Recorra la array completa e inserte cada elemento en el vector recién asignado usando la función push_back() . A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program of the above approach
#include <bits/stdc++.h>
using namespace std;
  
// Driver code
int main()
{
    // Initialise an array
    int arr[] = { 1, 2, 3, 4, 5 };
    int N = sizeof(arr) / sizeof(arr[0]);
  
    // Initialize an empty vector
    vector<int> v;
  
    // Traverse the array and
    for (int i = 0; i < N; i++)
        v.push_back(arr[i]);
  
    // Print all elements of vector
    for (auto ele : v) {
        cout << ele << " ";
    }
  
    return 0;
}
Producción

1 2 3 4 5 

Método 2: asignación basada en rango durante la inicialización
En C++ , la clase Vector proporciona un constructor que acepta un rango, por lo que para crear un vector a partir de elementos de array, pase el puntero a la primera y última posición del rango como argumento durante el vector inicialización que debe copiarse en el vector, es decir, (arr, arr+N).

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program of the above approach
#include <bits/stdc++.h>
using namespace std;
  
// Driver code
int main()
{
    // Initialise an array
    int arr[] = { 1, 2, 3, 4, 5 };
    int N = sizeof(arr) / sizeof(arr[0]);
  
    // Initialize a vector by passing the
    // pointer to the first and last element
    // of the range as arguments
    vector<int> v(arr, arr + N);
  
    // Print all elements of vector
    for (auto ele : v) {
        cout << ele << " ";
    }
  
    return 0;
}
Producción

1 2 3 4 5 

Tenga en cuenta que también se pueden usar los iteradores que solían apuntar a las direcciones de memoria de los contenedores STL.

  • std::begin(arr)- Iterador al primer elemento de una array.
  • std::end(arr)- Iterador al que está después del último elemento de una array.

vector<int> v(begin(arr), end(arr));

Método 3: uso de la función de inserción incorporada (posición, primer_iterador, último_iterador): la inserción() es una función incorporada en C++ STL que inserta nuevos elementos antes del elemento en la posición especificada, aumentando efectivamente el tamaño del contenedor por el número de elementos insertado. En lugar de un solo valor, también se puede pasar un rango como argumentos.

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program of the above approach
#include <bits/stdc++.h>
using namespace std;
  
// Driver code
int main()
{
    // Initialise an array
    int arr[] = { 1, 2, 3, 4, 5 };
    int N = sizeof(arr) / sizeof(arr[0]);
  
    // Initialize an empty vector
    vector<int> v;
  
    // Add array elements in the required
    // range into a vector from beginning
    v.insert(v.begin(), arr, arr + N);
  
    // Print all elements of vector
    for (auto ele : v) {
        cout << ele << " ";
    }
  
    return 0;
}
Producción

1 2 3 4 5 

Método 4: Uso de la función de copia incorporada (first_iterator, last_iterator, back_inserter()): esta es otra forma de copiar elementos de array en un vector mediante el uso de la función de copia incorporada . Esta función toma 3 argumentos, un iterador al primer elemento de la array, un iterador al último elemento de la array y la función back_inserter para insertar valores desde atrás.

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program of the above approach
#include <bits/stdc++.h>
using namespace std;
  
// Driver code
int main()
{
    // Initialise an array
    int arr[] = { 1, 2, 3, 4, 5 };
    int N = sizeof(arr) / sizeof(arr[0]);
  
    // Initialize an empty vector
    vector<int> v;
  
    // Copy array elements in the required
    // range into vector v using copy function
    copy(begin(arr), end(arr), back_inserter(v));
  
    // Print all elements of vector
    for (auto ele : v) {
        cout << ele << " ";
    }
  
    return 0;
}
Producción

1 2 3 4 5 

Método 5: Uso de la asignación de función incorporada (first_iterator, last_iterator): la función vector::assign() se puede usar para asignar valores a un vector nuevo o a un vector ya existente. También puede modificar el tamaño del vector si es necesario. Lleva el iterador a la primera y última posición como argumentos.

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program of the above approach
#include <bits/stdc++.h>
using namespace std;
  
// Driver code
int main()
{
    // Initialise an array
    int arr[] = { 1, 2, 3, 4, 5 };
    int N = sizeof(arr) / sizeof(arr[0]);
  
    // Initialize an empty vector
    vector<int> v;
  
    // Assign the elements of the array
    // into the vector v
    v.assign(arr, arr + N);
  
    // Print all elements of vector
    for (auto ele : v) {
        cout << ele << " ";
    }
  
    return 0;
}
Producción

1 2 3 4 5 

Método 6: Uso de la función de transformación incorporada (first_iterator, last_iterator, back_insert(), función): La función std::transform() toma 4 argumentos, un iterador al primer elemento de la array, un iterador al último elemento de la array , la función back_inserter para insertar valores desde atrás y una función definida por el usuario que se puede usar para modificar todos los elementos de la array, es decir, realizar una operación unaria, convertir caracteres en minúsculas a mayúsculas, etc.

A continuación se muestra la implementación del enfoque anterior:

C++14

// C++ program of the above approach
#include <bits/stdc++.h>
using namespace std;
  
// Function to increment the value by 1
int increment(int x)
{
    return x + 1;
}
  
// Driver code
int main()
{
    // Initialise an array
    int arr[] = { 1, 2, 3, 4, 5 };
    int N = sizeof(arr) / sizeof(arr[0]);
  
    // Initialize an empty vector
    vector<int> v;
  
    // Copy the elements of the array into
    // vector v and increment each value
    transform(arr, arr + N, back_inserter(v), increment);
  
    // Print all elements of vector
    for (auto ele : v) {
        cout << ele << " ";
    }
  
    return 0;
}
Producción

2 3 4 5 6 

Publicación traducida automáticamente

Artículo escrito por amigo01 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *