template<class ForwardIterator1, class ForwardIterator2>
ForwardIterator1
find_end(ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2);
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2>
ForwardIterator1
find_end(ExecutionPolicy&& exec,
ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2);
template<class ForwardIterator1, class ForwardIterator2,
class BinaryPredicate>
ForwardIterator1
find_end(ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2,
BinaryPredicate pred);
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2,
class BinaryPredicate>
ForwardIterator1
find_end(ExecutionPolicy&& exec,
ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2,
BinaryPredicate pred);
Effects:
Finds a subsequence of equal values in a sequence
. Returns:
The last iterator
i
in the range
[first1, last1 - (last2 - first2))
such that for every non-negative integer
n < (last2 - first2),
the following corresponding conditions hold:
*(i + n) == *(first2 + n), pred(*(i + n), *(first2 + n)) != false. Returns
last1
if
[first2, last2) is empty or if
no such iterator is found
.Complexity:
At most
(last2 - first2) * (last1 - first1 - (last2 - first2) + 1)
applications of the corresponding predicate
.