Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Orubatosu en 4 Diciembre 2014, 16:58 pm



Título: C++ Mas iteradores, con vectores de vectores ¡ juerga !
Publicado por: Orubatosu en 4 Diciembre 2014, 16:58 pm
Vale... he podido con todos los problemas que he encontrado en el "cursillo" que estoy siguiendo, pero este confieso que me ha dejado a cuadros.

Tenemos un vector tal que

Código:
vector<vector<int> > Datos;

A menos que me equivoque mucho, un iterador para este vector (para lo que serían "filas" del mismo)

Sería tal que...

Código:
vector<vector<int> >::iterator it

Suponiendo que eso este bien... ¿como accedo pues por ejemplo al tamaño de las "filas" del vector?

Porque algo como it.size() obviamente no funciona, ni *it.size() ni cualquier otra cosa que se me ocurra.

O lo mismo es que el mismo iterador está mal planteado, pero como este es uno de esos casos "raros" que no te aparecen en ejemplos por ningún lado, me pasa lo que me pasa, que llevo un par de horas dándome cabezazos contra la pared (contra el teclado no, que el jodio es caro)

Ya ni me atrevo a preguntar como hago un iterador para alguno de los vectores anidados en el vector... pero si alguien sabe donde puedo encontrar ejemplos de esta atrocidad, o explicarme "como se come esto" espero que Dios se lo pague con muchos hijos.

O al menos con intentos, que es mas divertido


Título: Re: C++ Mas iteradores, con vectores de vectores ¡ juerga !
Publicado por: Eternal Idol en 4 Diciembre 2014, 17:18 pm
Creo que (*it).size() es lo que buscas o it->size().

Ej.:

Código
  1. vector<vector<int>> Datos;
  2. vector<int> pfila;
  3. for (int x = 0; x < 10; ++x)
  4.  pfila.push_back(x);
  5. vector<int> sfila;
  6. for (int x = 0; x < 30; ++x)
  7.  sfila.push_back(x);
  8. Datos.push_back(pfila);
  9. Datos.push_back(sfila);
  10. for (vector<vector<int>>::iterator it = Datos.begin(); it != Datos.end(); ++it)
  11.  cout << it->size() << endl;