std::stable_partition
Материал из cppreference.com
![]() |
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
Определено в заголовочном файле <algorithm>
|
||
template< class BidirIt, class UnaryPredicate > BidirIt stable_partition( BidirIt first, BidirIt last, UnaryPredicate p ); |
||
Сортирует элементы в диапазоне
[first, last)
таким образом, что все элементы, для которых предикат возвращает p
true предшествовать элементы, для которых предикат возвращает p
false. Относительный порядок элементов сохраняется. Оригинал:
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. Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Содержание |
[править] Параметры
first, last | - | диапазон элементов в порядок
Оригинал: the range of elements to reorder Текст был переведён автоматически через Google Translate. Вы можете проверить и исправить перевод. Для инструкций кликните сюда. |
p | - | унарный предикат, который возвращаетtrue если элемент должны быть заказаны до других элементов . Оригинал: if the element should be ordered before other elements Текст был переведён автоматически через Google Translate. Вы можете проверить и исправить перевод. Для инструкций кликните сюда. Определение функции предиката должны быть эквивалентно следующему: bool pred(const Type &a); Определение не должно иметь const &, но функция не должна модифицировать принимаемые объекты. |
Требования к типам | ||
-BidirIt должен соответствовать требованиям ValueSwappable and BidirectionalIterator .
| ||
-The type of dereferenced BidirIt must meet the requirements of MoveAssignable and MoveConstructible .
|
[править] Возвращаемое значение
Итератор на первый элемент второй группы
Оригинал:
Iterator to the first element of the second group
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
[править] Сложность
Именно
last-first
применения предиката и в большинстве свопы (last-first)*log(last-first)
, если недостаточно памяти или линейного количество обменов, если наличии достаточного объема памяти.Оригинал:
Exactly
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.Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
[править] Пример
#include <iostream> #include <algorithm> int main() { std::vector<int> v{0, 0, 3, 0, 2, 4, 5, 0, 7}; std::stable_partition(v.begin(), v.end(), [](int n){return n>0;}); for (int n : v) { std::cout << n << ' '; } std::cout << '\n'; }
Вывод:
3 2 4 5 7 0 0 0 0
[править] См. также
делит диапазон элементов на две группы Оригинал: divides a range of elements into two groups Текст был переведён автоматически через Google Translate. Вы можете проверить и исправить перевод. Для инструкций кликните сюда. (шаблон функции) |