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