Isn't using find with retro awkward?
Steven Schveighoffer
schveiguy at yahoo.com
Thu Feb 17 04:16:17 PST 2011
On Wed, 16 Feb 2011 17:58:12 -0500, jam <gr0v3er+d at gmail.com> wrote:
> On Wed, 16 Feb 2011 22:00:13 +0100, Andrej Mitrovic wrote:
>
>> On 2/16/11, jam <gr0v3er+d at gmail.com> wrote:
>>> void main()
>>> {
>>> auto a = [5,1,2,3,4,5,1];
>>> auto index = countUntil(retro(a),5);
>>> writeln(a[a.length-1-index .. a.length]);
>>> }
>>>
>>>
>> That works for random-access ranges.
>> But I was under the impression that bidirectional ranges don't
>> necessarily have a length property?
>
> Doh. That is exactly correct. I guess the following would work for
> bidirectional ranges:
>
> import std.stdio,std.algorithm,std.range,std.container;
>
> void main()
> {
> auto a = [5,1,2,3,4,5,1];
> auto index = countUntil(retro(a),5);
> auto R = retro(take(retro(a),index+1));
> writeln(R);
> R[0] = 6;
> writeln(a);
> }
>
> but this is just getting nutty.
>
This doesn't work, you can't retro take because take is not a
bidirectional range. It might work in the case of arrays, but it won't
work for something like a string.
-Steve
More information about the Digitalmars-d-learn
mailing list