std::partition_point
Материал из 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 ForwardIt, class UnaryPredicate > ForwardIt partition_point( ForwardIt first, ForwardIt last, UnaryPredicate p); |
(1) | (начиная с C++11) |
Рассматривает на разделы (как бы std::partition) диапазон
[first, last)
и находит конце первого раздела, то есть первый элемент, который не удовлетворяет p
или last
если в прошлом случае, если все элементы удовлетворяют p
.Оригинал:
Examines the partitioned (as if by std::partition) range
[first, last)
and locates the end of the first partition, that is, the first element that does not satisfy p
or last
if last if all elements satisfy p
.Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Содержание |
[править] Параметры
first, last | - | распределяли диапазон элементов для изучения
Оригинал: the partitioned range of elements to examine Текст был переведён автоматически через Google Translate. Вы можете проверить и исправить перевод. Для инструкций кликните сюда. |
p | - | унарный предикат, который возвращаетtrue для элементов, найденных в начале диапазона . Оригинал: for the elements found in the beginning of the range Текст был переведён автоматически через Google Translate. Вы можете проверить и исправить перевод. Для инструкций кликните сюда. Определение функции предиката должны быть эквивалентно следующему: bool pred(const Type &a); Определение не должно иметь const &, но функция не должна модифицировать принимаемые объекты. |
Требования к типам | ||
-ForwardIt должен соответствовать требованиям ForwardIterator .
|
[править] Возвращаемое значение
Итератор прошлом концу первого раздела в
[first, last)
или last
, если все элементы удовлетворяют p
.Оригинал:
The iterator past the end of the first partition within
[first, last)
or last
if all elements satisfy p
.Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
[править] Сложность
Логарифмическая в расстоянии между
first
и last
Оригинал:
Logarithmic in the distance between
first
and last
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
[править] Пример
#include <algorithm> #include <array> #include <iostream> #include <iterator> int main() { std::array<int, 9> v = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; auto is_even = [](int i){ return i % 2 == 0; }; std::partition(v.begin(), v.end(), is_even); auto p = std::partition_point(v.begin(), v.end(), is_even); std::cout << "Before partition:\n "; std::copy(v.begin(), p, std::ostream_iterator<int>(std::cout, " ")); std::cout << "\nAfter partition:\n "; std::copy(p, v.end(), std::ostream_iterator<int>(std::cout, " ")); }
Вывод:
Before partition: 8 2 6 4 After partition: 5 3 7 1 9
[править] См. также
(C++11) |
проверяет, является ли диапазон отсортированы в порядке возрастания Оригинал: checks whether a range is sorted into ascending order Текст был переведён автоматически через Google Translate. Вы можете проверить и исправить перевод. Для инструкций кликните сюда. (шаблон функции) |