Series Article of cpp -- 12

Whats the most efficient way to erase duplicates and sort a vector

Posted by OUC_LiuX on October 11, 2021

From StackOverflow

Let’s compare three approaches:

  1. Just using vector, sort + unique
    sort( vec.begin(), vec.end() );
    vec.erase( unique( vec.begin(), vec.end() ), vec.end() );
    
  2. 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() );
    
  3. 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: