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