Задать вопрос
BacCM
@BacCM
C++ почти с рождения

Зачем нужен std::unique?

Вопрос не, в том что он делает, а для чего и почему так реализован?
Грубо говоря, если есть набор данных, то чтобы оставить только уникальные элементы, придется сначала отсортировать, а потом уже использовать 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));


Есть подозрение, что сделано так, потому как сортировка у каждого может быть своя уже отсортировано и прочее бла бла бла. Но всё равно странно.
Скажем так когда-то давно когда впервые воспользовался этим методом, был неприятно удивлен, т.к. естественно ман не прочитал. А тут как раз недавно набрел на срач по этому поводу...

Какие у кого мысли?
Может он вообще для другого нужен?
  • Вопрос задан
  • 11732 просмотра
Подписаться 1 Простой 7 комментариев
Решения вопроса 1
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
https://ru.cppreference.com/w/cpp/algorithm/unique - расписано яснее некуда.
Для хранения множества уникальных элементов просто используйте std::set или std::unordered_set
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы