www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - std.copy (to multiple output ranges),

reply Robert Schadek <realburner gmx.de> writes:
I'm searching the docs for something similar to:
copy(someInputRange, firstOutputRange, secondOutputRange, ....);
I know how to write it by hand, but I'm suspecting that something like
this is already in phobos.

And secondly, is there some function that gives me a forward range to
some input range?
Jan 27 2014
next sibling parent reply "Ilya Yaroshenko" <ilyayaroshenko gmail.com> writes:
On Monday, 27 January 2014 at 17:26:35 UTC, Robert Schadek wrote:
 I'm searching the docs for something similar to:
 copy(someInputRange, firstOutputRange, secondOutputRange, ....);
 I know how to write it by hand, but I'm suspecting that 
 something like
 this is already in phobos.
Hi, I think you need something like this: import std.stdio; import std.algorithm; import std.range; void main() { auto a = new int[10], b = new int[10], c = new int[10]; iota(30).copy(chain(a, b, c)); a.writeln; b.writeln; c.writeln; }
 And secondly, is there some function that gives me a forward 
 range to
 some input range?
maybe std.array.array? It is generate an array for some input range.
Jan 27 2014
next sibling parent "Ilya Yaroshenko" <ilyayaroshenko gmail.com> writes:
On Monday, 27 January 2014 at 18:36:32 UTC, Ilya Yaroshenko wrote:
 On Monday, 27 January 2014 at 17:26:35 UTC, Robert Schadek 
 wrote:
 I'm searching the docs for something similar to:
 copy(someInputRange, firstOutputRange, secondOutputRange, 
 ....);
 I know how to write it by hand, but I'm suspecting that 
 something like
 this is already in phobos.
Hi, I think you need something like this: import std.stdio; import std.algorithm; import std.range; void main() { auto a = new int[10], b = new int[10], c = new int[10]; iota(30).copy(chain(a, b, c)); a.writeln; b.writeln; c.writeln; }
 And secondly, is there some function that gives me a forward 
 range to
 some input range?
maybe std.array.array? It is generate an array for some input range.
If you need duplicates: a.copy(b).copy(c).copy(d) ...
Jan 27 2014
prev sibling parent Robert Schadek <realburner gmx.de> writes:
On 01/27/2014 07:36 PM, Ilya Yaroshenko wrote:
 On Monday, 27 January 2014 at 17:26:35 UTC, Robert Schadek wrote:
 I'm searching the docs for something similar to:
 copy(someInputRange, firstOutputRange, secondOutputRange, ....);
 I know how to write it by hand, but I'm suspecting that something like
 this is already in phobos.
Hi, I think you need something like this: import std.stdio; import std.algorithm; import std.range; void main() { auto a = new int[10], b = new int[10], c = new int[10]; iota(30).copy(chain(a, b, c)); a.writeln; b.writeln; c.writeln; }
good idea but does not work, this fills every array with 10 elements
 And secondly, is there some function that gives me a forward range to
 some input range?
maybe std.array.array? It is generate an array for some input range.
yes this works, I was stupid here
Jan 27 2014
prev sibling parent reply Justin Whear <justin economicmodeling.com> writes:
On Mon, 27 Jan 2014 15:44:43 +0100, Robert Schadek wrote:

 I'm searching the docs for something similar to:
 copy(someInputRange, firstOutputRange, secondOutputRange, ....);
 I know how to write it by hand, but I'm suspecting that something like
 this is already in phobos.
 
 And secondly, is there some function that gives me a forward range to
 some input range?
Curiously, copy doesn't implement multiple output ranges. I don't think there's any reason it couldn't. I think an enhancement request is in order. Turning an InputRange into a ForwardRange implies buffering, std.array.array is a general solution.
Jan 27 2014
parent Robert Schadek <realburner gmx.de> writes:
On 01/27/2014 07:59 PM, Justin Whear wrote:
 On Mon, 27 Jan 2014 15:44:43 +0100, Robert Schadek wrote:

 I'm searching the docs for something similar to:
 copy(someInputRange, firstOutputRange, secondOutputRange, ....);
 I know how to write it by hand, but I'm suspecting that something like
 this is already in phobos.

 And secondly, is there some function that gives me a forward range to
 some input range?
Curiously, copy doesn't implement multiple output ranges. I don't think there's any reason it couldn't. I think an enhancement request is in order.
thats what I thought
 Turning an InputRange into a ForwardRange implies buffering, 
 std.array.array is a general solution.
Jan 27 2014