En si....
MIENTRAS (TRUE)
{
SI (NO HAY DATOS) BREAK;
next(dato)
PUSH (dato, vector1)
SI (NO HAY DATOS) BREAK;
next(dato)
PUSH (dato, vector2)
SI (NO HAY DATOS) BREAK;
next(dato)
PUSH (dato, vector3)
SI (NO HAY DATOS) BREAK;
next(dato)
PUSH (dato, vector4)
}
Puedes hacer un solo bucle o dividirlo en N bucles si tienes N-vectores o arreglos, ejemplo en C:
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
const int elems = 20;
const int nv = 4;
int main ()
{
int ary[] = { 1,2,3,4,
5,6,7,8,
9,10,11,12,
13,14,20
};
int* vec[nv];
int dl[nv]; // dimesiones logicas
int i,j, limit;
// reserva de memoria (new) e inicializaciones
for (j=0;j<nv;j++){
vec
[j
] = (int*) malloc(elems
* sizeof(int)); dl[j] = 0;
}
limit = sizeof(ary)/sizeof(ary[0]);
for (j=0;j<nv;j++)
for (i=j; i< sizeof(ary)/sizeof(ary[0]) ;){
vec[j][dl[j]] = ary[i];
i+=nv;dl[j]++;
}
// Imprimo
for (j=0;j<nv;j++){
cout << "V1 = ";
for (i=0; i<dl[j]; i++)
cout << vec[j][i] << " ";
cout << endl;
}
return 0;
}
Y la otra forma que te comentaba (siempre en C)
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
const int elems = 20;
const int nv = 4;
int main (void)
{
int ary[] = { 1,2,3,4,
5,6,7,8,
9,10,11,12,
13,14,20
};
int* vec[nv];
int dl[nv]; // dimesiones logicas
int i,j, limit;
// reserva de memoria (new) e inicializaciones
for (j=0;j<nv;j++){
vec
[j
] = (int*) malloc(elems
* sizeof(int)); dl[j] = 0;
}
limit = sizeof(ary)/sizeof(ary[0]);
for (i=0;i<limit; ){
for (j=0;j<nv;j++){
vec[j][dl[j]] = ary[i];
dl[j]++; i++;
if (i==limit-1) goto outside;
}
}
outside:
// Imprimo
for (j=0;j<nv;j++){
cout << "V1 = ";
for (i=0; i<dl[j]; i++)
cout << vec[j][i] << " ";
cout << endl;
}
return 0;
}
No uso vector y menos una libreria como T++ pero creo se puede ver la logica de cualquiera de los ejemplos.
Salu2