У меня есть вектор, содержащий несколько несмежных дубликатов.
В качестве простого примера рассмотрим:
2 1 6 1 4 6 2 1 1
Я пытаюсь сделать этот vector
уникальным, удалив несмежные дубликаты и поддерживая порядок элементов.
Результат:
2 1 6 4
Решения, которые я пробовал, следующие:
- Вставка в std:: set, но проблема с этим подходом заключается в том, что он нарушит порядок элементов.
- Используйте комбинацию std:: sort и std:: unique. Но опять же проблема с порядком.
-
Ручное устранение дубликатов:
Define a temporary vector TempVector. for (each element in a vector) { if (the element does not exists in TempVector) { add to TempVector; } } swap orginial vector with TempVector.
Мой вопрос:
Существует ли какой-либо алгоритм STL, который может удалить несмежные дубликаты из вектора? Какова его сложность?