`Description`

`Description`

```
```*Find_end* is misnamed: it is much more similar to *search *than to *find*, and a more accurate name would have been *search_end*.

Like *search*, *find_end* attempts to find a subsequence within the range *[first1, last1)* that is identical to *[first2, last2)*. The difference is that while *search* finds the first such subsequence, *find_end* finds the last such subsequence. *Find_end* returns an iterator pointing to the beginning of that subsequence; if no such subsequence exists, it returns *last1*.

The two versions of *find_end* differ in how they determine whether two elements are the same: the first uses *operator==*, and the second uses the user-supplied function object *comp*.

The first version of *find_end* returns the last iterator *i* in the range *[first1, last1 – (last2 – first2))* such that, for every iterator *j* in the range *[first2, last2)*, **(i + (j – first2)) == *j*. The second version of *find_end* returns the last iterator *i* in *[first1, last1 – (last2 – first2))* such that, for every iterator *j* in *[first2, last2)*, *binary_pred(*(i + (j – first2)), *j)* is *true*. These conditions simply mean that every element in the subrange beginning with *i* must be the same as the corresponding element in *[first2, last2)*.