From StackOverflow
Let’s compare three approaches:
- Just using vector, sort + unique
sort( vec.begin(), vec.end() ); vec.erase( unique( vec.begin(), vec.end() ), vec.end() );
- Convert to set (manually)
set<int> s; unsigned size = vec.size(); for( unsigned i = 0; i < size; ++i ) s.insert( vec[i] ); vec.assign( s.begin(), s.end() );
- Convert to set (using a constructor)
set<int> s( vec.begin(), vec.end() ); vec.assign( s.begin(), s.end() );
Here’s how these perform as the number of duplicates changes: