28 Algorithms library [algorithms]

28.5 Non-modifying sequence operations [alg.nonmodifying]

28.5.13 Search [alg.search]

template<class ForwardIterator1, class ForwardIterator2> ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2); template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2> ForwardIterator1 search(ExecutionPolicy&& exec, ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2); template<class ForwardIterator1, class ForwardIterator2, class BinaryPredicate> ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2, BinaryPredicate pred); template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2, class BinaryPredicate> ForwardIterator1 search(ExecutionPolicy&& exec, ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2, BinaryPredicate pred);

Effects: Находит подпоследовательность равных значений в последовательности.

Returns: Первый итератор i в диапазон [first1, last1 - (last2-first2)) таким образом, что для каждого неотрицательного целого числа n меньше last2 - first2 следующих соответствующих условий: *(i + n) == *(first2 + n), pred(*(i + n), *(first2 + n)) != false. Возвращает, first1 если [first2, last2) пусто, в противном случае возвращает, last1 если такой итератор не найден.

Complexity: Максимум (last1 - first1) * (last2 - first2) применений соответствующего предиката.

template<class ForwardIterator, class Size, class T> ForwardIterator search_n(ForwardIterator first, ForwardIterator last, Size count, const T& value); template<class ForwardIterator, class Size, class T, class BinaryPredicate> ForwardIterator search_n(ForwardIterator first, ForwardIterator last, Size count, const T& value, BinaryPredicate pred); template<class ExecutionPolicy, class ForwardIterator, class Size, class T> ForwardIterator search_n(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, Size count, const T& value); template<class ExecutionPolicy, class ForwardIterator, class Size, class T, class BinaryPredicate> ForwardIterator search_n(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, Size count, const T& value, BinaryPredicate pred);

Requires: Тип Size должен быть преобразован в целочисленный тип ([conv.integral], [class.conv]).

Effects: Находит подпоследовательность равных значений в последовательности.

Returns: Первый итератор i в диапазон [first, last-count) таким образом, что для каждого неотрицательного целого числа n меньше count следующих соответствующих условий: *(i + n) == value, pred(*(i + n),value) != false. Возвращает, last если такой итератор не найден.

Complexity: Максимум last - first применений соответствующего предиката.

template<class ForwardIterator, class Searcher> ForwardIterator search(ForwardIterator first, ForwardIterator last, const Searcher& searcher);

Effects: Эквивалентен: return searcher(first, last).first;

Remarks: Searcher не обязательно соответствовать CopyConstructible требованиям.