On Sun, 14 Aug 2011 23:00:26 -0400, Andrej Mitrovic <andrej.mitrov...@gmail.com> wrote:

Simplified (and slow) implementation:

T[] splitLength(T)(T arr, size_t count) if (isArray!T)
{
    T[] result;

    while (arr.length)
    {
        result ~= arr.take(count);
        arr.popFrontN(count);
    }

    return result;
}

Ouch!

Slicing is your friend :) Also, threw in a reserve for good measure, and you really need an assert to ensure count is not 0:

assert(count > 0);

result.reserve((arr.length + count - 1) / count)

while(arr.length > count)
{
   result ~= arr[0..count];
   arr = arr[count..$];
}

if(arr.length)
  result ~= arr;

-Steve

Reply via email to