Defined in header
template< class BidirIt, class UnaryPredicate >
BidirIt stable_partition( BidirIt first, BidirIt last, UnaryPredicate p );
Reorders the elements in the range
[first, last) in such a way that all elements for which the predicate
p returns true precede the elements for which predicate
p returns false. Relative order of the elements is preserved.
|first, last||-||the range of elements to reorder|
|p||-|| unary predicate which returns true if the element should be ordered before other elements. |
The signature of the predicate function should be equivalent to the following:
bool pred(const Type &a);
The signature does not need to have const &, but the function must not modify the objects passed to it.
| -The type of dereferenced |
 Return value
Iterator to the first element of the second group
last-first applications of the predicate and at most
(last-first)*log(last-first) swaps if there is insufficient memory or linear number of swaps if sufficient memory is available.
This function attempts to allocate a temporary buffer, typically by calling std::get_temporary_buffer. If the allocation fails, the less efficient algorithm is chosen.
3 2 4 5 7 0 0 0 0
 See also
| divides a range of elements into two groups |