Вопрос не, в том что он делает, а для чего и почему так реализован?
Грубо говоря, если есть набор данных, то чтобы оставить только уникальные элементы, придется сначала отсортировать, а потом уже использовать unique. Иначе поведение не определено.
Как-то так если ничего не напутал:
std::vector<int> a = {1, 3, 4, 454, 5454, 4, 3, 2, 2, 1, 1, 2, 3, 5, 2, 1, -32};
std::sort(begin(a), end(a));
a.erase(std::unique(begin(a), end(a)), end(a));
Есть подозрение, что сделано так, потому как сортировка у каждого может быть своя уже отсортировано и прочее бла бла бла. Но всё равно странно.
Скажем так когда-то давно когда впервые воспользовался этим методом, был неприятно удивлен, т.к. естественно ман не прочитал. А тут как раз недавно набрел на срач по этому поводу...
Какие у кого мысли?
Может он вообще для другого нужен?