unique - una funzione che comprime tutte le sequenze di elementi consecutivi identici in uno in un tempo lineare.
Come argomento, vengono passati i confini dell'array, all'interno dei quali è necessario applicare la compressione.
Un iteratore viene restituito alla nuova estremità (non inclusiva) dell'array. Dovresti stare attento con gli elementi dopo la nuova fine ma prima di quella vecchia, poiché avranno un valore indefinito.
Puoi leggere ulteriori informazioni nella documentazione.
Se stai utilizzando questa funzione su un vettore, è conveniente ridimensionare utilizzando il risultato restituito (ne parleremo più avanti).
Esempi:
vettore a = { 3, 3, 3, 2, 3, 3, 1, 1, 4, 5, 5 };
unico(a.begin(), a.end());
// a = [3, 2, 3, 1, 4, 5, ?, ?, ?, ?, ?]
// usare la funzione univoca è comodo da fare
// matrice ausiliaria per la compressione delle coordinate
a = { 235, 10, 41, 10, 41, 41, 235, 500, 500 };
sort(a.begin(), a.end());
// a = [10, 10, 41, 41, 41, 235, 235, 500, 500]
a.resize(unique(a.begin(), a.end()) - a.begin());
// a = [10, 41, 235, 500]