On 17.12.14 13:30, Tobias Pankrath wrote:
void append(T, Args...)(ref T[] data, Args args)
{
     static size_t estimateLength(Args args)
     {
         size_t result;
         foreach(e; args)
             static if(hasLength!(typeof(e)))
                 result += e.length;
             else
                 result += 1;

         return result;
     }

     auto app = appender!(T[])(data);
     app.reserve(data.length + estimateLength(args));

     foreach(e; args)
         app.put(e);
     data = app.data;
}

void main()
{
     import std.stdio;
     int[] data;
     append(data, 1, 2, only(1, 2, 3), iota(4, 9));
     writeln(data);
}

---

Maybe appender.put should get an overload that does the same, though I
didn't had the need for it yet.

It's for convenient one line: arr.append(e1, e2, ...);
I said "something like that" :)

Reply via email to