Circular Buffer

Rene Zwanenburg renezwanenburg at gmail.com
Tue Feb 11 08:30:41 PST 2014


On Tuesday, 11 February 2014 at 16:26:06 UTC, Rene Zwanenburg 
wrote:
> On Tuesday, 11 February 2014 at 03:10:02 UTC, Jonathan Dunlap 
> wrote:
>> Wow! This is GREAT stuff. My use-case is slightly more 
>> complex, and I'm not sure how to best apply this knowledge. 
>> The retro reverses the array which is problematic in itself as 
>> well as losing the starting index location. I have an array 
>> that I'd like to elegantly "rotate". Best way I can show this 
>> is by example of an imaginary rotate function:
>>
>> auto data = [1,2,3];
>> assert( data.cycle.rotate(2) == [3,1,2] );
>> assert( data.cycle.rotate(-2) == [2,3,1] );
>>
>> Perhaps what I'm doing is too complex requires me making my 
>> own iterator or something. In my quest of writing readable 
>> efficient code, I'm wondering what's the best route here. 
>> Thanks :)
>
> Perhaps something like this?
> http://dpaste.dzfl.pl/d4b82b0b5cba

Wait, we can avoid creating that closure and eliminate the map. 
This should be a bit faster and not use the GC:

http://dpaste.dzfl.pl/78c65eacfeb1


More information about the Digitalmars-d-learn mailing list