Inhaltsverzeichnis

unique()

#include <algorithm>

For unique (For first, For last) 
For unique (For first, For last, Binary pred) 
For unique (Exec pol, first, For last) 
For unique (Exec pol, For first, For last, Binary pred) 
 
Range ranges::unique (Range r, Binary pred = {}, Proj proj = {}) 
Range ranges::unique (For first, For last, Binary pred = {}, Proj proj = {}) 

Entfernt alle Elemente e aus dem Bereich [first,last), die mit ihren Vorgänger übereinstimmen bzw. auf die pred(proj(vorgaenger),proj(e)) zutrifft.

Gleichwertige Elemente über größere Distanzen werden nicht erkannt. Ist der Bereich vorsortiert, werden alle Duplikate entfernt.

Der Algorithmus arbeitet so, dass entfernten Elementen und ihren Nachfolgern nachfolgende Werte zugewiesen werden. Damit ist der Algorithmus nicht für assoziative Container einsetzbar. Die Elemente hinter dem neuen Ende werden nicht wirklich entfernt. Dies kann nur ein Container selbst. Von diesem Algorithmus gibt es einen spezielle Version für Listen, die Elemente wirklich entfernt und ein deutlich besseres Zeitverhalten besitzt.

Parameter

first Anfang des Bereichs
last Ende des Bereichs
pred zweistelliges Prädikat (Vorgabe = equal_to)
proj einstelliger Funktor (Vorgabe = std::identity)
pol parallele Ausführungsart

Ergebnis

Rückgabewert: Iterator j hinter das Ende des Bereiches mit den eindeutigen Elementen bzw. {j,last}.

Siehe auch

unique_copy().

Beispiel

unique.cpp
#include <algorithm>
#include <iostream>
#include <string>
 
int main()
{
  std::string s = "Hallo, Welt";
  std::cout << s << '\n';
  std::sort(begin(s), end(s));
 
  auto neues_ende = std::unique(begin(s), end(s));
  s.erase(neues_ende, s(end));
 
  std::cout << s << '\n';
}