Añadir Vector a Vector en C++
-
Usar la función
insert
para añadir un vector a otro en C++ -
Usar la función
insert
para añadir elementos en el vector en C++
En este artículo se explicarán varios métodos para añadir un vector a otro vector en C++.
Usar la función insert
para añadir un vector a otro en C++
El método insert
es una función incorporada del contenedor std::vector
que puede añadir múltiples elementos a los objetos vector
. Como primer ejemplo, mostramos cómo añadir un rango dado de un vector
a otro. Si especificamos tres iteradores como argumentos, la función insert
añadirá elementos del rango de los dos últimos argumentos antes de que el iterador pase como primer parámetro. Puesto que pasamos el iterador stop
del primer objeto vector
en el siguiente ejemplo de código, la función está haciendo esencialmente la adición de dos vectores.
#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;
}
Producción :
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;
Alternativamente, podemos especificar los iteradores usando los métodos std::end
/std::begin
, implementando una forma más genérica de pasar los argumentos a la función 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;
}
Usar la función insert
para añadir elementos en el vector en C++
Otra forma común de usar el método insert
es añadir un rango de elementos con un valor dado al vector
. Por ejemplo, podemos insertar ceros en las primeras 4 posiciones del entero vector
. Nótese que el primer argumento es la posición del elemento antes de la cual se añaden los elementos. El método insert
puede ser utilizado incluso si los elementos vector
son asignados manualmente usando la llamada 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;
}
Producción :
i_vec1 : 12; 32; 43; 53; 23; 65; 84;
i_vec1 (inserted): 0; 0; 0; 0; 12; 32; 43; 53; 23; 65; 84;
El método insert
también puede ser aplicado cuando dos vectores de cadenas necesitan ser concatenados. El siguiente ejemplo demuestra el caso dado con casi la misma sintaxis que se utiliza con los vectores enteros.
#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;
}
Producción :
doordash; dribble; renode; xilinx; airbus; sikorsky;
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