[eside-ghost] Guarreando con iterators en C++
Alfredo Beaumont
alfredo.beaumont en gmail.com
Mar Ene 22 23:28:28 CET 2008
Ar, 2008eko Urtren 22a(e)an, STenyaK (Bruno Gonzalez)(e)k idatzi zuen:
> On 1/22/08, Jon Valdés <juanval a bildua gmail.com> wrote:
> > 2008/1/22 Alberto M. S. <nohadonja a bildua hotmail.com>:
> > > *i==v[4] => v[0]==*v==*(i-sizeof(v)/sizeof(*i)+1)
> >
> > Humm interesante... solo que tenienado acceso a v para hacer el sizeof
> > ahi, resulta mas facil un v->front(), por ejemplo xD
> >
> > Lo que estaba intentando es sacar v[0] sin tener acceso a v, pero lo
> > estoy viendo bastante negro :-S
> >
> > Gracias por la sugerencia, de todas formas
>
> No domino mucho de STL como para saber si ese pseudocodigo puede
> funcionar, pero me da la impresión de que tal vez (eso ya sabrás tu
> mejor si es posible o no) sería mejor un rediseño, en vez de recurrir
> a warrohacks (lo digo por la necesidad de mencionar sizeof, q me
> recuerda demasiado al estilo de programacion C, metido en medio de C++
> de alto nivel).
Cierto, con acceso al vector, la forma 'correcta' es del tipo:
i == v.end() ? i = v.begin() : i++;
>
> Por cierto, como nota offtopic: conocíais el foreach de boost? Lo
> descubrí hace un par de semanas, es una gozada poder olvidarte de la
> odiosa sintaxis de iterators y de typedefs warros y compañía, cuando
> lo unico que quieres es simplemente recorrer un contenedor de inicio a
> fin :-D
En C++ estándar también tienes un algoritmo for_each, aunque mucho más
limitado, aunque te quitas una dependencia importante.
--
Alfredo Beaumont Sainz
http://www.alfredobeaumont.org/blog.cgi
Más información sobre la lista de distribución eside-ghost