Пространства имён
Варианты
Действия

unique

Материал из cppreference.com

Синтаксис:

    #include <algorithm>
    forward_iterator p_end unique( forward_iterator start, forward_iterator end );
    forward_iterator p_end unique( forward_iterator start, forward_iterator end, BinPred p );

Алгоритм unique() удаляет все последующие дубликаты элементов диапазона [start, end]. Все дублирующие значения перемещаются в конец последовательности.

Если задан бинарный предикат p, он используется для проверки двух элементов на эквивалентность.

Возвращаемое значение unique() - итератор на конец модифицированного диапазона.

unique() работает за линейное время.

Пример:

// пример использования функции unique
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
 
bool myfunction (int i, int j) {
  return (i==j);
}
 
int main () {
  int myints[] = {10,20,20,20,30,30,20,20,10};    // 10 20 20 20 30 30 20 20 10
  vector<int> myvector(myints, myints+9);
  vector<int>::iterator it;
 
  // с использованием сравнения по умолчанию (оператор ==)
  it = unique(myvector.begin(), myvector.end());  // 10 20 30 20 10 30 20 20 10
                                                  //                ^
 
  myvector.resize(it - myvector.begin());         // 10 20 30 20 10
 
  // с использованием предиката
  unique (myvector.begin(), myvector.end(), myfunction);   // (no changes)
 
  // вывод содержания массива
  cout << "myvector contains: ";
  for (it = myvector.begin(); it != myvector.end(); ++it)
    cout << " " << *it;
 
  cout << endl;
 
  return 0;
}

Вывод:

myvector contains: 10 20 30 20 10


Смотрите также: adjacent_find, remove, unique_copy