• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1[/
2    Copyright 2010 Neil Groves
3    Distributed under the Boost Software License, Version 1.0.
4    (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5/]
6[section:partition partition]
7
8[heading Prototype]
9
10``
11template<
12    class ForwardRange,
13    class UnaryPredicate
14    >
15typename range_iterator<ForwardRange>::type
16partition(ForwardRange& rng, UnaryPredicate pred);
17
18template<
19    class ForwardRange,
20    class UnaryPredicate
21    >
22typename range_iterator<const ForwardRange>::type
23partition(const ForwardRange& rng, UnaryPredicate pred);
24
25template<
26    range_return_value re,
27    class ForwardRange,
28    class UnaryPredicate
29    >
30typename range_return<ForwardRange, re>::type
31partition(ForwardRange& rng, UnaryPredicate pred);
32
33template<
34    range_return_value re,
35    class ForwardRange,
36    class UnaryPredicate
37    >
38typename range_return<const ForwardRange, re>::type
39partition(const ForwardRange& rng, UnaryPredicate pred);
40``
41
42[heading Description]
43
44`partition` orders the elements in `rng` based on `pred`, such that the elements that satisfy `pred` precede the elements that do not. In the versions that return a single iterator, the return value is the middle iterator. In the versions that have a configurable range_return, `found` corresponds to the middle iterator.
45
46
47[heading Definition]
48
49Defined in the header file `boost/range/algorithm/partition.hpp`
50
51[heading Requirements]
52
53* `ForwardRange` is a model of the __forward_range__ Concept. For C++ versions prior to C++11 the underlying std::partition requires Bidirectional Iterators, hence the requirement for older library versions is for a __bidirectional_range__.
54* `UnaryPredicate` is a model of the `PredicateConcept`.
55* `ForwardRange`'s value type is convertible to `UnaryPredicate`'s argument type.
56
57[heading Complexity]
58
59Linear. Exactly `distance(rng)` applications of `pred`, and at most `distance(rng) / 2` swaps.
60
61[endsect]
62
63
64