[Duda] 2 iteraciones al mismo tiempo

Iniciado por RayHack, 22 Diciembre 2013, 00:32 AM

0 Miembros y 1 Visitante están viendo este tema.

RayHack

Buenas amigos quisiera pedirles un poco de ayuda en una duda que tengo.

¿Como hago 2 iteraciones una de map y otra de un vector en un mismo bucle?

for(std::map<int, Struct*>::iterator Structid = Mapa.begin(); Structid != Mapa.end(); ++Structid)
{
for(std::vector<int>::iterator vectorid = Vector.begin(); vectorid != Vector.end(); ++vectorid)
{
}
}


PD: Necesito pasar las iteraciones del vector por cada elemento del map, osea ejecutar los 2 bucles al mismo tiempo.

Un saludo y muchas gracias por su ayuda.



amchacon

Pues:
Código (cpp) [Seleccionar]
std::map<int, Struct*>::iterator Structid = Mapa.begin();

for(std::vector<int>::iterator vectorid = Vector.begin(); vectorid != Vector.end() && Structid != Mapa.end(); ++vectorid)
{
   //...

  Structid++;
}
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

0xDani

Y así? Ahora mismo no estoy seguro de que compile, pero podría funcionar:

Código (cpp) [Seleccionar]


for(std::vector<int>::iterator vectorid = Vector.begin(), std::map<int, Struct*>::iterator Structid = Mapa.begin(); vectorid != Vector.end() && Structid != Mapa.end(); ++vectorid, ++Structid)
{
  //...
}


PD: Si puedes usar características de C++ 11 usa la keyword auto para que no te salga tan largo e ilegible el cuerpo del bucle.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

RayHack

Muchas gracias a los dos por sus respuestas, me ocurre el mismo problema el primer bucle vector imprime solo 1 dato y el mapa igual pero con el primer numero del dato del vector, es algo muy raro lo que me está pasando.

Lo que quiero hacer es por ejemplo:

MAPA VALOR = {1, 2, 3, 4, 5};
VECTOR VALORES = {0, 1, 2, 3, 4, 5};

Quiero que cada valor del mapa pase en este caso 5 veces por el valor del mapa y que luego que pasen las 5 iteraciones por el primer valor del mapa pase al segundo valor y haga lo mismo.

PD: Con mi forma de 2 bucle for funciona pero el vector solo iteraciona el mayor valor osea que los menores no se pasan, o sea que si el primer y unico valor es 1 y luego se inserta otro valor mayor entonces solo pasa el valor mayor.

Un saludo y muchas gracias.