Regarding partition_copy

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Sun May 5 13:10:51 PDT 2013


On 5/5/13 7:22 AM, bearophile wrote:
> Splitting a range in two according to a predicate is a common
> enough need. How do you translate this C++/STL idiom to D/Phobos?
>
>
> vector<int> source_data;
> ...
> vector<int> good_stuff, bad_stuff;
> partition_copy(begin(source_data), end(source_data),
> inserter(good_stuff, end(good_stuff)),
> inserter(bad_stuff, end(bad_stuff)),
> is_good);
>
>
> If this is not handy to implement with the current Phobos, is it
> worth adding a similar function to Phobos?
>
> Thank you,
> bye,
> bearophile

Yah, I've been thinking of adding a new category of functions that 
generate multiple ranges and conversely merge multiple ranges into one.

A possibility here is to define segregate!pred(range) that takes a 
predicate and a range and returns a tuple of two ranges (for true and 
false values of the predicate). The two ranges can be consumed at 
different rates etc.

That won't work with input ranges though.


Andrei


More information about the Digitalmars-d-learn mailing list