Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

stable_partition
PrevUpHomeNext
Prototype

template<class ForwardRange, class UnaryPredicate>
typename range_iterator<ForwardRange>::type
stable_partition(ForwardRange& rng, UnaryPredicate pred);

template<class ForwardRange, class UnaryPredicate>
typename range_iterator<const ForwardRange>::type
stable_partition(const ForwardRange& rng, UnaryPredicate pred);

template<
    range_return_value re,
    class ForwardRange,
    class UnaryPredicate
>
typename range_return<ForwardRange, re>::type
stable_partition(ForwardRange& rng, UnaryPredicate pred);

template<
    range_return_value re,
    class ForwardRange,
    class UnaryPredicate
>
typename range_return<const ForwardRange, re>::type
stable_partition(const ForwardRange& rng, UnaryPredicate pred);

Description

stable_partition reorders the elements in the range rng base on the function object pred. Once this function has completed all of the elements that satisfy pred appear before all of the elements that fail to satisfy it. stable_partition differs from partition because it preserves relative order. It is stable.

For the versions that return an iterator, the return value is the iterator to the first element that fails to satisfy pred.

For versions that return a range_return, the found iterator is the iterator to the first element that fails to satisfy pred.

Definition

Defined in the header file boost/range/algorithm/stable_partition.hpp

Requirements
  • ForwardRange is a model of the Forward Range Concept.
  • ForwardRange is mutable.
  • UnaryPredicate is a model of the PredicateConcept.
Complexity

Best case: O(N) where N is distance(rng). Worst case: N * log(N) swaps, where N is distance(rng).


PrevUpHomeNext