РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
400 of 815 menu

Функция unique

Функция unique удаляет подряд идущие одинаковые элементы из диапазона. Важно понимать, что функция не изменяет размер контейнера, а лишь перемещает уникальные элементы в начало диапазона и возвращает итератор на новый логический конец последовательности. В первый и второй параметры мы передаем итераторы начала и конца диапазона, а в необязательный третий параметр - предикат, который определяет, считать ли два элемента одинаковыми.

Синтаксис

unique(first, last) unique(first, last, pred)

Пример

Давайте удалим подряд идущие одинаковые числа из вектора:

#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { vector<int> v = {1, 1, 2, 2, 2, 3, 4, 4, 5}; auto last = unique(v.begin(), v.end()); v.erase(last, v.end()); for (int el : v) { cout << el << " "; } cout << endl; return 0; }

Результат выполнения кода:

1 2 3 4 5

Пример

Важно помнить, что unique удаляет только подряд идущие одинаковые элементы. Давайте рассмотрим пример, где одинаковые числа стоят не рядом:

#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { vector<int> v = {1, 2, 1, 2, 1}; auto last = unique(v.begin(), v.end()); v.erase(last, v.end()); for (int el : v) { cout << el << " "; } cout << endl; return 0; }

Результат выполнения кода:

1 2 1 2 1

Пример

Давайте используем предикат для удаления подряд идущих элементов, которые отличаются не более чем на 1:

#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { vector<int> v = {1, 2, 4, 5, 8, 9, 10}; auto last = unique(v.begin(), v.end(), [](int a, int b) { return abs(a - b) <= 1; }); v.erase(last, v.end()); for (int el : v) { cout << el << " "; } cout << endl; return 0; }

Результат выполнения кода:

1 4 8

Смотрите также

  • функция remove,
    которая удаляет элементы по значению
  • функция remove_if,
    которая удаляет элементы по условию
  • функция sort,
    которая сортирует диапазон
  • функция find,
    которая ищет элемент в диапазоне
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить