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.
Pues:
std::map<int, Struct*>::iterator Structid = Mapa.begin();
for(std::vector<int>::iterator vectorid = Vector.begin(); vectorid != Vector.end() && Structid != Mapa.end(); ++vectorid)
{
//...
Structid++;
}
Y así? Ahora mismo no estoy seguro de que compile, pero podría funcionar:
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.
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.