[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