[C con Clase] 2. Ayuda con la plantilla <vector> (David Reza) (David Reza)

mil100 atltras en gmail.com
Mie Nov 11 18:52:42 CET 2009


Hola.

> Lo que yo tengo es, dentro de un bucle, lo siguiente:
> 
> Close.operator== (nodo)
> 
Por lo que deduzco pretendes acceder a un objeto tipo nodo que se
encuentra en el vector de nodos Close. El problema está en que en lugar
de operator deberías usar '[]'. 
Supongo que te has confundido porque en la referencia cuando nombran los
métodos indican '[]' mediante operator[].


> El cual cuenta los elementos que concuerden con el target value e incrementa
> el contador. El problema es que no sé que es eso de los iteradores ni su
> uso.

El vector::iterator se usa para recorrer un vector y debes tratar el
iterador como si se tratara de un puntero a un elemento del vector. Es
decir si tu vector es de objetos nodo sobre un iterador de ese vector se
pueden aplicar todos los métodos inherentes a la clase nodo usando la
notación adecuada para un puntero (-> en lugar del punto). El siguiente
ejemplo lo ilustra muy bien, está sacado de:
http://www.cplusplus.com/reference/stl/vector/begin/

// vector::begin
#include <iostream>
#include <vector>
using namespace std;
int main ()
{
  vector<int> myvector;
  for (int i=1; i<=5; i++) myvector.push_back(i);

  vector<int>::iterator it;

  cout << "myvector contains:";
  for ( it=myvector.begin() ; it < myvector.end(); it++ )
    cout << " " << *it;

  cout << endl;

  return 0;
}

Aquí han usado un iterador (it) para recorrer el vector de objetos int
(myvector) e ir mostrando los números almacenados en cada posición del
vector.

Un saludo a todos.





Más información sobre la lista de distribución Cconclase