> Respecto a la forma correcta de contar la cantidad de referencias al > vector de punteros que se usan en el iterador Lista::iter_ord de la tarea > programada http://www.di-mare.com/adolfo/cursos/2004-1/p2-ta-8.htm > Como programador-usuario final ¿creo Yo una instancia del objeto OrdVc, > la cual tendrá al mismo tiempo un contenedor lista?... o más bién > ¿creo yo una instancia de la clase ADH_lista? (Por ejemplo) y esta a su > vez contendrá el iteradot OrdVc? ... En fin, ¿el usuario tiene acceso a > la clase Ordv como ADH_lista::OrdVc o el caso es diferente? En C++, la forma de usar un iterador para recorrer un contenedor siempre es la siguiente: Lista L; // La lista Lista::iterador p; // recorre la lista Lista::iterador endL; // después de la lista p = L.begin(); // p.operator= ( Lista.begin() ); endL = L.end(); // generalmente NULL==0 for ( ; p != endL; ++p) { Procese( *p ); } Esta manera de usar el iterador DEBE mantener para los iteradores OrdVc, de manera que el código se vería así: Lista L; // La lista Lista::iter_ord p; // recorre la lista Lista::iter_ord endL; // después de la lista p = L.begin_ord(); // p.operator= ( Lista.begin() ); endL = L.end_ord(); // generalmente NULL==0 for ( ; p != endL; ++p) { Procese( *p ); } Por eso le corresponde al método de la lista llamado Lista::begin_ord() inicializar al iterador creándole el vector-sote de punteros, a través del contador de vector-sotes "cont_vector". También es por eso que cuando se alcanza el final de la lista, pues Lista::iter_ord::operator++() se sale de la lista, es necesario "desconectar" al iterador de su "cont_vector". ¿Cómo se conecta un iterador de tipo Lista::iter_ord a un "cont_vector"? Hay 2 maneras: 1) Cuando el iterador es inicializado después de ejecutar Lista::begin_ord() 2) En una asignación, como cuando uno escribe "p = q++"