vectores.como enlazar dos vectores en uno en c++
necesito crear un vector nuevo partiendo de dos viejos. y luego ordenarlo en orden creciente el nuevo vector.
Hola, Vuelvo a ver a Noel respondiendo , está bien. Si aun lo necesitas yo te podria ayudar a hacerlo en c++ utilizando la libreria stl :
(uso una clase punto en la explicacion)
necesitas headers:
#include <stdio.h>
#include <iostream>
#include <list>
using namespace std;
vector<Punto> V1,V2,nuevoV;
void inserta(Punto& p)
{
if(nuevoV.empty())
nuevoV.push_back(p);
else
{
vector<Punto>::iterator it=nuevoV.begin();
for(;it!=nuevoV.end();it++)
{
if(p.getX() < it->getX())
{
nuevoV.insert(it,p);
return;
}
}
nuevoV.push_back(p);
}
}
void recorrerVectores()
{
vector<Punto>::iterator it=V1.begin();
for(;it!=V1.end();it++)
{
inserta(*it);
}
vector<Punto>::iterator it2=V2.begin();
for(;it2!=V2.end();it2++)
{
inserta(*it2);
}
}
El coste en el peor caso es de O(n*n)
Espero ke te sirva de ayuda ,
Saludos
(uso una clase punto en la explicacion)
necesitas headers:
#include <stdio.h>
#include <iostream>
#include <list>
using namespace std;
vector<Punto> V1,V2,nuevoV;
void inserta(Punto& p)
{
if(nuevoV.empty())
nuevoV.push_back(p);
else
{
vector<Punto>::iterator it=nuevoV.begin();
for(;it!=nuevoV.end();it++)
{
if(p.getX() < it->getX())
{
nuevoV.insert(it,p);
return;
}
}
nuevoV.push_back(p);
}
}
void recorrerVectores()
{
vector<Punto>::iterator it=V1.begin();
for(;it!=V1.end();it++)
{
inserta(*it);
}
vector<Punto>::iterator it2=V2.begin();
for(;it2!=V2.end();it2++)
{
inserta(*it2);
}
}
El coste en el peor caso es de O(n*n)
Espero ke te sirva de ayuda ,
Saludos
perdona , me he equivocado en un header
en vez de #include <list> pon #include <Vector>
en vez de #include <list> pon #include <Vector>
Te mando la concatenacion de dos vectores.
Ordenalos por cualquier metodo que conozcas.
// program ArrayConcat.cpp
// concatenar dos arreglos.
// written in borland c++ ver 4.5
#include <iostream.h>
#include <iomanip.h>
const int M = 15,
N = 8;
void ShowArray(int *arr,int max,char *msg)
{
cout << setw(7) << msg << " : ";
for(int i = 0;i < max-1;i++)
cout << arr[i] << ",";
cout << arr[i] << endl;
} // SHOW ARRAY
int *Concat(int *a,int *b,int M,int N)
{
int *c = new int[M+N];
for(int i = 0; i < M;i++)
c[i] = a[i];
for(i = 0;i < N;i++)
c[i+M] = b[i];
return c;
} // CONCAT
void main()
{
int a[M] = {15,9,3,4,5,8,7,6,2,12,11,10,13,14,1},
b[N] = {23,22,21,25,24,28,27,26};
ShowArray(a,M,"a");
ShowArray(b,N,"b");
int *c = Concat(a,b,M,N);
ShowArray(c,M+N,"c = a+b");
delete []c;
} // MAIN
Ordenalos por cualquier metodo que conozcas.
// program ArrayConcat.cpp
// concatenar dos arreglos.
// written in borland c++ ver 4.5
#include <iostream.h>
#include <iomanip.h>
const int M = 15,
N = 8;
void ShowArray(int *arr,int max,char *msg)
{
cout << setw(7) << msg << " : ";
for(int i = 0;i < max-1;i++)
cout << arr[i] << ",";
cout << arr[i] << endl;
} // SHOW ARRAY
int *Concat(int *a,int *b,int M,int N)
{
int *c = new int[M+N];
for(int i = 0; i < M;i++)
c[i] = a[i];
for(i = 0;i < N;i++)
c[i+M] = b[i];
return c;
} // CONCAT
void main()
{
int a[M] = {15,9,3,4,5,8,7,6,2,12,11,10,13,14,1},
b[N] = {23,22,21,25,24,28,27,26};
ShowArray(a,M,"a");
ShowArray(b,N,"b");
int *c = Concat(a,b,M,N);
ShowArray(c,M+N,"c = a+b");
delete []c;
} // MAIN
