Duda con vector STL c++

Aziwar

Buenas! Tengo una duda en como relacionar el iterator y la posición del vector que quiero.

Por ejemplo hasta ahora en un vector normal pues hacía vector = xxx, donde i es la posición en la que yo quería que se almacenara el elemento xxx.

Pero ahora con el vector de la STL no puedo hacer eso (o tal vez si, pero tengo que sobrecargar operador = ?? ya que estoy guardando una clase mia propia), sino que el metodo insert me pide que tengo pasarle el iterator.

Entonces mi duda es como puedo relacionar iterator y i ??

Algo en plan vector<clase> :: iterator it = i; porque es para representar unos grafos, donde quiero que en cada posición del vector se almacene la información referente al nodo de mismo número.

Hasta ahora lo tengo hecho con un push_back, pq da la casualidad que en el fichero del que cargo la información están todos los nodos definidos por orden creciente. Pero si se diera el caso de que tuviera la definición de los nodos desordenada (por ejemplo: 1,3,6,2,5,4), la informacion se me guardaría incorrectamente ya que por ejemplo en la posicion vector[1] se me guardaría la información de 3, y asi no???

RoDRa

aziwar si lo resuelves dilo, yo tambien tengo una situacion ahora mismo parecida

r2d2rigo

http://www.cplusplus.com/reference/stl/vector/insert/
http://msdn.microsoft.com/en-us/library/s5bta5ha%28VS.80%29.aspx

El iterator puedes incrementarlo (++), sumarle posiciones, etc.

Aziwar

pero no puedes hacer que el iterator sea la posicion 3, o que el iterator sea la posicion 7 o así...

Eso es lo que ando buscando, y en cplusplus no veo que salga por ningún lado.

Por ahora lo que hice fue que mi clase tenga un atributo privado que me diga el número de nodo que es, pero no es lo que busco

L

y si haces algo como:

for( itr=contenedor.inicio, int i=0; i<=3; i++)
itr++;

¿Asi no te mueves desde 0...3? Es decir, que itr te quedaría apuntando a v[3]

Aziwar

mmm puede que eso funcione, pero me da que lo voy a dejar como lo tengo, ya que si no el código se complicaría en que cada vez que haya que almacenar un dato haya que realizar dicho for xD

L

Es que se supone que el iterador es para iterar por el contenedor, y creo que es de O(n) si o si

Usuarios habituales

  • LobsangRampa
  • Aziwar
  • r2d2rigo
  • RoDRa