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.Original:
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.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Содержание |
[править] Параметры
| first, last | - | распределяли диапазон элементов для изучения
Original: the partitioned range of elements to examine The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | |||||||||
| p | - | унарный предикат, который возвращает true для элементов, найденных в начале диапазона . Original: for the elements found in the beginning of the range The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. Сигнатура функции-предиката должны быть эквивалентна следующей:
В сигнатуре не обязательно наличие const &, но функция не должна изменять переданный ей объект. | |||||||||
| Требования, накладываемые на типы | |||||||||||
-ForwardIt должен соответствовать требованиям ForwardIterator.
| |||||||||||
[править] Возвращаемое значение
Итератор прошлом концу первого раздела в
[first, last) или last, если все элементы удовлетворяют p.Original:
The iterator past the end of the first partition within
[first, last) or last if all elements satisfy p.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[править] Сложность
Логарифмическая в расстоянии между
first и lastOriginal:
Logarithmic in the distance between
first and lastThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[править] Пример
#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) |
проверяет, является ли диапазон отсортированы в порядке возрастания Original: checks whether a range is sorted into ascending order The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (шаблон функции) |