std::search_n
Заголовочный файл <algorithm>
|
||
template< class ForwardIt, class Size, class T > ForwardIt1 search_n( ForwardIt first, ForwardIt last, Size count, const T& value ); |
(1) | |
template< class ForwardIt, class Size, class T, class BinaryPredicate > ForwardIt1 search_n( ForwardIt first, ForwardIt last, Size count, const T& value, |
(2) | |
Ищет в диапазоне [first, last)
первую последовательность count
одинаковых элементов, каждый из которых равен заданному значению value
. Первый вариант использует operator==
для сравнения элементов, второй вариант использует заданный бинарный предикат p
.
Содержание |
[править] Параметры
first, last | - | диапазон элементов для проверки | |||||||||
count | - | длина искомой последовательности | |||||||||
value | - | значение элементов искомой последовательности | |||||||||
p | - | binary predicate which returns true if the elements should be treated as equal. The signature of the predicate function should be equivalent to the following:
The signature does not need to have const &, but the function must not modify the objects passed to it. | |||||||||
Type requirements | |||||||||||
-ForwardIt must meet the requirements of ForwardIterator .
|
[править] Возвращаемое значение
Итератор на начало найденной последовательности в диапазоне [first, last)
. Если такая последовательность не найдена, возвращается last
.
[править] Сложность
Не больше last - first
применений предиката.
[править] Возможная реализация
First version |
---|
template<class ForwardIt, class Size, class T> ForwardIt1 search_n(ForwardIt first, ForwardIt last, Size count, const T& value) { Size curr_count = 0; ForwardIt result, t_last = first; std::advance(t_last, std::distance(first, last) - count + 1); for (; first != t_last; first++) { curr_count = 0; result = first; while (*first == value) { curr_count++; if (curr_count == count) { return result; } ++first; } } return last; } |
Second version |
template<class ForwardIt, class Size, class T, class BinaryPredicate> ForwardIt1 search_n(ForwardIt first, ForwardIt last, Size count, const T& value, BinaryPredicate p) { Size curr_count = 0; ForwardIt result, t_last = first; std::advance(t_last, std::distance(first, last) - count + 1); for (; first != t_last; first++) { curr_count = 0; result = first; while (p(*first == value)) { curr_count++; if (curr_count == count) { return result; } ++first; } } return last; } |
[править] Пример
Этот раздел не завершён |
[править] См. также
находит последний последовательности элементов в определенном диапазоне Original: finds the last sequence of elements in a certain range The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (шаблон функции) | |
(C++11) |
находит первый элемент, удовлетворяющий определенным критериям Original: finds the first element satisfying specific criteria The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (шаблон функции) |
searches for a range of elements (шаблон функции) |