cpp/algorithm/ranges/unique

@1@ Eliminates all except the first element from every consecutive group of equivalent elements from the range and returns a subrange, where  is a past-the-end iterator for the new end of the range.

@@ Two consecutive elements and  are considered equivalent if, where  is an iterator in the range.

@2@ Same as, but uses as the range, as if using  as , and  as.

Return value
Returns, where is a past-the-end iterator for the new end of the range.

Complexity
For nonempty ranges, exactly applications of the corresponding predicate  and no more that twice as many applications of any projection.