STL - unique

Dal quinto capitolo di Designing Components with the C++ STL, di Ulrich Breymann. Algoritmi standard.

Sezione dedicata agli algoritmi che modificano le sequenze su cui operano.

5.4.10: unique e unique_copy

L'algoritmo unique() elimina tutti gli elementi identici consecutivi, tranne uno e ritorna il nuovo iteratore alla fine della sequenza.

É disponibile anche nelle variazioni _copy che permettono di creare una copia della sequenza altrove.

Come remove(), anche unique() non elimina gli elementi superflui in coda alla sequenza. Se necessario, occorre rimuoverli esplicitamente, come faccio alla fine dell'esempio che segue:

#include<iostream>
#include<algorithm>
#include<vector>
#include<iterator>

using namespace std;

int main() {
vector<int> v(20);
for (int i = 0; i < v.size(); ++i)
v[i] = i / 3;

ostream_iterator<int> output(cout, " ");
copy(v.begin(), v.end(), output);
cout << endl;

vector<int>::iterator last = unique(v.begin(), v.end());
copy(v.begin(), last, output);
cout << endl;

copy(v.begin(), v.end(), output);
cout << endl;

v.erase(last, v.end());
copy(v.begin(), v.end(), output);
cout << endl;
}

Nessun commento:

Posta un commento