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