Steven Schveighoffer wrote:
On Tue, 27 Jul 2010 14:27:20 -0400, Andrei Alexandrescu
<[email protected]> wrote:
Steven Schveighoffer wrote:
On Tue, 27 Jul 2010 14:12:34 -0400, Andrei Alexandrescu
<[email protected]> wrote:
Steven Schveighoffer wrote:
On Tue, 27 Jul 2010 11:21:08 -0400, Andrei Alexandrescu
<[email protected]> wrote:
We have std.algorithm.splitter which splits a range into
components without allocating a new array.
Is there an interest in joiner(), the corresponding function for
join() that joins elements of a range in conjunction with a
separator without allocating a new array?
How do you do that?
Well joiner would offer an input or in best case a forward range
with the range primitives.
How do you store all the ranges you joined for future reference
without creating an array of those ranges? With splitter, it's
straightforward, there's one range to store.
Or am I missing something?
It's just one range and one separator.
auto joined = joiner(["Mary", "has"], "\t");
assert(joined.front == 'M');
Ah, Ok. I was under the impression that the input was a bunch of
individual ranges to join.
So basically, you are pushing the "range of ranges" allocation onto the
user. That works.
That is quite an interesting problem, esp if you intend to keep it lazy
and forward things like random access to the joined range. Or output
the result to writeln. Hey, could it potentially be used as a formatter
to writefln?
As of the upcoming release, I changed write() and writeln() to fully
support input ranges.
Andrei