Aggiungi vettore a vettore in C++

Jinku Hu 12 ottobre 2023
  1. Usa la funzione insert per aggiungere un vettore al vettore in C++
  2. Usa la funzione insert per aggiungere elementi in Vector in C++
Aggiungi vettore a vettore in C++

Questo articolo spiegherà diversi metodi su come aggiungere un vettore a un altro vettore in C++.

Usa la funzione insert per aggiungere un vettore al vettore in C++

Il metodo insert è una funzione incorporata del contenitore std::vector che può aggiungere più elementi agli oggetti vector. Come primo esempio, mostriamo come aggiungere un dato intervallo da un vettore a un altro. Se specifichiamo tre iteratori come argomenti, la funzione insert aggiungerà elementi dall’intervallo degli ultimi due argomenti prima che l’iteratore sia passato come primo parametro. Dato che nel seguente esempio di codice passiamo l’iteratore end del primo oggetto vector, la funzione essenzialmente sta aggiungendo due vettori.

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

template <typename T>
void printVectorElements(vector<T> &vec) {
  for (auto i = 0; i < vec.size(); ++i) {
    cout << vec.at(i) << "; ";
  }
  cout << endl;
}

int main() {
  vector<int> i_vec1 = {12, 32, 43, 53, 23, 65, 84};
  vector<int> i_vec2 = {121, 321, 431, 531, 231, 651, 841};

  cout << "i_vec1           : ";
  printVectorElements(i_vec1);
  i_vec1.insert(i_vec1.end(), i_vec2.begin(), i_vec2.end());
  cout << "i_vec1 (inserted): ";
  printVectorElements(i_vec1);
  cout << endl;

  return EXIT_SUCCESS;
}

Produzione:

i_vec1           : 12; 32; 43; 53; 23; 65; 84;
i_vec1 (inserted): 12; 32; 43; 53; 23; 65; 84; 121; 321; 431; 531; 231; 651; 841;

In alternativa, possiamo specificare gli iteratori usando i metodi std::end / std::begin, implementando un modo più generico di passare argomenti alla funzione insert:

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

template <typename T>
void printVectorElements(vector<T> &vec) {
  for (auto i = 0; i < vec.size(); ++i) {
    cout << vec.at(i) << "; ";
  }
  cout << endl;
}

int main() {
  vector<int> i_vec1 = {12, 32, 43, 53, 23, 65, 84};
  vector<int> i_vec2 = {121, 321, 431, 531, 231, 651, 841};

  cout << "i_vec1           : ";
  printVectorElements(i_vec1);
  i_vec1.insert(std::end(i_vec1), std::begin(i_vec2), std::end(i_vec2));
  cout << "i_vec1 (inserted): ";
  printVectorElements(i_vec1);
  cout << endl;

  return EXIT_SUCCESS;
}

Usa la funzione insert per aggiungere elementi in Vector in C++

Un altro modo comune di utilizzare il metodo insert è aggiungere un intervallo di elementi con un dato valore al vettore. Ad esempio, possiamo inserire zeri nelle prime 4 posizioni del vettore intero. Notare che il primo argomento è la posizione dell’elemento prima del quale vengono aggiunti gli elementi. Il metodo insert può essere utilizzato anche se gli elementi vector sono allocati manualmente usando la chiamata new;

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

template <typename T>
void printVectorElements(vector<T> &vec) {
  for (auto i = 0; i < vec.size(); ++i) {
    cout << vec.at(i) << "; ";
  }
  cout << endl;
}

int main() {
  vector<int> i_vec1 = {12, 32, 43, 53, 23, 65, 84};

  cout << "i_vec1           : ";
  printVectorElements(i_vec1);
  i_vec1.insert(i_vec1.begin(), 4, 0);
  cout << "i_vec1 (inserted): ";
  printVectorElements(i_vec1);
  cout << endl;

  return EXIT_SUCCESS;
}

Produzione:

i_vec1           : 12; 32; 43; 53; 23; 65; 84;
i_vec1 (inserted): 0; 0; 0; 0; 12; 32; 43; 53; 23; 65; 84;

Il metodo insert può essere applicato anche quando è necessario concatenare due vettori di stringhe. L’esempio seguente mostra il caso specificato con quasi la stessa sintassi utilizzata con i vettori interi.

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

template <typename T>
void printVectorElements(vector<T> &vec) {
  for (auto i = 0; i < vec.size(); ++i) {
    cout << vec.at(i) << "; ";
  }
  cout << endl;
}

int main() {
  vector<string> str_vec1 = {"doordash", "dribble", "renode", "xilinx"};
  vector<string> str_vec2 = {"airbus", "sikorsky"};

  str_vec1.insert(str_vec1.end(), str_vec2.begin(), str_vec2.end());
  printVectorElements(str_vec1);
  cout << endl;

  return EXIT_SUCCESS;
}

Produzione:

doordash; dribble; renode; xilinx; airbus; sikorsky;
Autore: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Articolo correlato - C++ Vector