template <class InputIterator, class Predicate>
bool is_partitioned(InputIterator first, InputIterator last, Predicate pred);
template <class ExecutionPolicy, class ForwardIterator, class Predicate>
bool is_partitioned(ExecutionPolicy&& exec,
ForwardIterator first, ForwardIterator last, Predicate pred);
Requires: Для перегрузки с нетExecutionPolicy, InputIterator«s тип значения должен быть конвертирован вPredicate» S типа аргумента. Для перегрузки сExecutionPolicy, ForwardIterator«с типом значения должны быть конвертированы вPredicate» S типа аргумента.
Returns:true if [first, last) пуст или если [first, last) разделен наpred, то есть если все элементы, удовлетворяющие условиям,pred появляются перед теми, которые этого не делают.
template<class ForwardIterator, class Predicate>
ForwardIterator
partition(ForwardIterator first, ForwardIterator last, Predicate pred);
template<class ExecutionPolicy, class ForwardIterator, class Predicate>
ForwardIterator
partition(ExecutionPolicy&& exec,
ForwardIterator first, ForwardIterator last, Predicate pred);
Requires: ForwardIterator должны удовлетворять требованиям ValueSwappable.
Effects: Помещает все элементы в диапазоне,[first, last) которые удовлетворяют,pred перед всеми элементами, которые ему не удовлетворяют.
Returns: Итератораi таким образом, что для каждого итератораj в диапазоне [first, i)pred(*j) != false, и для каждого итератораk в диапазоне[i, last),pred(*k) == false.
Complexity: ПустьN=last - first:
Для перегрузки безExecutionPolicy, как разN применения предиката. В большинствеN/2 случаев меняет местами, еслиForwardIterator соответствует BidirectionalIterator требованиям, и не больше, вN противном случае.
Для перегрузки сExecutionPolicy, O(NlogN) свопами иO(N) приложениями предиката.
template<class BidirectionalIterator, class Predicate>
BidirectionalIterator
stable_partition(BidirectionalIterator first, BidirectionalIterator last,
Predicate pred);
template<class ExecutionPolicy, class BidirectionalIterator, class Predicate>
BidirectionalIterator
stable_partition(ExecutionPolicy&& exec,
BidirectionalIterator first, BidirectionalIterator last,
Predicate pred);
Requires: BidirectionalIterator должны удовлетворять требованиям ValueSwappable. Тип*first должен удовлетворять требованиям MoveConstructible и MoveAssignable.
Effects: Помещает все элементы в диапазоне, [first, last) которые удовлетворяют,pred перед всеми элементами, которые ему не удовлетворяют.
Returns: Итератора i таким образом, что для каждого итератора j в диапазоне [first, i), pred(*j) != falseи для каждого итератора k в диапазоне [i, last), pred(*k) == false. Относительный порядок элементов в обеих группах сохраняется.
template <class InputIterator, class OutputIterator1,
class OutputIterator2, class Predicate>
pair<OutputIterator1, OutputIterator2>
partition_copy(InputIterator first, InputIterator last,
OutputIterator1 out_true, OutputIterator2 out_false,
Predicate pred);
template <class ExecutionPolicy, class ForwardIterator, class ForwardIterator1,
class ForwardIterator2, class Predicate>
pair<ForwardIterator1, ForwardIterator2>
partition_copy(ExecutionPolicy&& exec,
ForwardIterator first, ForwardIterator last,
ForwardIterator1 out_true, ForwardIterator2 out_false,
Predicate pred);
Requires:
Для перегрузки без каких - либоExecutionPolicy,InputIterator«с типом значение должно бытьCopyAssignable (таблица26), и должны быть доступны для записи ([iterator.requirements.general]) кout_true иout_falseOutputIteratorс, и должны быть конвертированы в Predicate» с аргументом типа.
Для перегрузки сExecutionPolicy,ForwardIterator«с типом значения должны бытьCopyAssignable, и должны быть доступны для записи на out_true иout_falseForwardIteratorс, и должны быть конвертированы вPredicate» с аргументом типа. [ Note: ЕслиForwardIteratorтип значения не является типом значения, это может повлиять на производительностьCopyConstructible. ] — end note
Для обеих перегрузок входной диапазон не должен перекрываться ни с одним из выходных диапазонов.
Effects: Для каждого итератораi в[first, last)копии*i в начале диапазона выходной мощности с ,out_true еслиpred(*i) этоtrue, или в диапазоне , начиная с выхода вout_false противном случае.
Returns: Такая параp , котораяp.first является концом выходного диапазона, начинающегося с,out_true иp.second является концом выходного диапазона, начинающегося сout_false.
template<class ForwardIterator, class Predicate>
ForwardIterator partition_point(ForwardIterator first,
ForwardIterator last,
Predicate pred);
Requires:ForwardIteratorТип значения должен быть преобразован вPredicateтип аргумента.[first, last) должны быть разделены наpred, т. е. все элементы, которые удовлетворяют,pred должны появляться перед теми, которые не удовлетворяют .
Returns: Итераторmid такой, чтоall_of(first, mid, pred) иnone_of(mid, last, pred) есть обаtrue.