如何有效地擦除向量中的重复元素

5 c++

我有

 vector<string> data ; // I hold some usernames in it
Run Code Online (Sandbox Code Playgroud)

在那个向量中,我有重复的元素,所以我想擦除这个/这些元素.是否有任何算法或库函数来擦除重复的元素?

ex :
    In data;
           abba, abraham, edie, Abba, edie
    After operation;
           abba, abraham, edie, Abba
Run Code Online (Sandbox Code Playgroud)

Jam*_*lis 10

如果您可以对容器中的元素进行排序,那么简单且相对有效的解决方案将是:

std::sort(data.begin(), data.end());
data.erase(std::unique(data.begin(), data.end()), data.end());
Run Code Online (Sandbox Code Playgroud)

  • @Naveen:为什么?如果等效元素的相对位置很重要,那么你只需要一个稳定的排序,如果你只是要删除重复项,这显然无关紧要. (3认同)