Boost logo

Boost Users :

Subject: Re: [Boost-users] Range_iterator - char* - reverse
From: Krzysztof Czainski (1czajnik_at_[hidden])
Date: 2010-12-10 16:17:51


2010/12/10 Rao, Anant <Anant.Rao_at_[hidden]>

> Hi Eric,
> Yes, it was a typo on my part to use ++ when I shd have had a --.
> But, I was talking about the compile error. That is, even if I had a '--',
> it would still complain.
> The offending line is:
>
> while( cp != ire )
> {
> //Do something
> cp--;
> }
>
>
> Please bear with me as I (hopefully) make my requirement statement more
> precise:
>
> Fwd:
> iterator_range<char*> ir( &s[0], &s[ strlen(s) ] );
>
> for (cp = (char*)ir.begin(); cp != (char*)ir.end(); ++cp)
> {
> cout << "cp in ri [" << *cp << "]\n";
> }
>
> I want similar code (using 'cp') to traverse backwards using 'ir' or
> another container-in-reverse mode.
>
>
The thing is, a pointer is an iterator, but an iterator is not necessarily a
pointer. The iterator returned by boost::begin(ir) happens to be char*,
because ir is an iterator_range<char*>. But boost::rbegin(ir) doesn't return
anything convertible to char*. Rbegin returns an iterator - a reverse
iterator wrapper arounc char*, but not convertible to char*.

Maybe You will receive some more useful help if You explain why You need to
convert a reverse iterator to char* ;-)

Regards, Kris



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net