Boost logo

Boost :

Subject: Re: [boost] New algorithm in Boost.Algorithm: "gather" -- looking for comments
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2013-01-21 21:36:12


AMDG

On 01/21/2013 04:49 PM, Marshall Clow wrote:
> I have committed a new algorithm named "gather" into Boost.Algorithm.
>
> Actually, it's one I wrote for Sean Parent as part of ASL about five years ago, and it's the first (of hopefully many) of the bits oF ASL to be moved into boost.
>
> Here's a summary:
>
> gather() takes a collection of elements defined by a pair of iterators and moves the ones satisfying a predicate to them to a position (called the pivot) within the sequence. The algorithm is stable. The result is a pair of iterators that contains the items that satisfy the predicate.
>
> template <typename ForwardIterator, typename Pred>
> std::pair<ForwardIterator,ForwardIterator>
> gather ( ForwardIterator first, ForwardIterator last, ForwardIterator pivot, Pred pred );
>
>
> Given an sequence containing:
> int [] arr = { 0 1 2 3 4 5 6 7 8 9 };
>
> A call to gather ( arr, arr + 10, arr + 4, IsEven) will result in:
>
> 1 3 0 2 4 6 8 5 7 9
> |---|-----|
> first | second
> pivot
>
> where first and second are the fields of the pair returned by the call.
>

I don't understand why the matches are
inserted between 3 and 5, rather than
(say) 1 and 3. You need to specify
exactly what the algorithm does (and
does not) guarantee.

In Christ,
Steven Watanabe


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk