Transform a sorted range to a range of ranges of equal elements

Tobias Pankrath via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Dec 1 10:37:13 PST 2014


Basically I need std.algorithm.uniq or std.algorithm.group, but 
instead of a single element or an element and a number I want 
ranges that each contain consecutive elements considered equal.

Example: [1,1, 2,2,2,3,4,4] -> [1, 1], [2,2,2], [3], [4,4].

Let's call this uniqRange. This way std.algorithm.uniq could be 
implemented as

auto uniq(R, pred)(R input)
{
     return uniqRange!pred(R).map!(r => r.front));
}

Is there any elegant way to do this with using phobos? Or do I 
need to write my own range?



More information about the Digitalmars-d-learn mailing list