如何从向量中删除重复的单词?

时间:2016-01-25 09:45:44

标签: c++ vector duplicates

我有一个存储有重复单词的向量。如何删除重复项?示例:如果向量具有apple, orange, pear, apple, grape, grape,我希望它只有apple, orange, pear, grape。我尝试使用unique但它没有用。我做错了吗?

1 个答案:

答案 0 :(得分:4)

使用std :: sort和erase:

std::sort( v.begin(), v.end() );
v.erase( std::unique(v.begin(), v.end()), v.end());

如果您想保存元素的顺序,可以使用std::remove_ifstd::set来保存唯一元素:

template <typename T>
void remove_dups_from_vector( std::vector<T> &v )
{
    std::set<T> unique_elements;
    v.erase( std::remove_if( v.begin(), v.end(),
        [&]( const T &value ) {
            return !unique_elements.insert(value).second;
        } )
        , v.end( ) );
}