$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
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