我有一个存储有重复单词的向量。如何删除重复项?示例:如果向量具有apple, orange, pear, apple, grape, grape
,我希望它只有apple, orange, pear, grape
。我尝试使用unique
但它没有用。我做错了吗?
答案 0 :(得分:4)
使用std :: sort和erase:
std::sort( v.begin(), v.end() );
v.erase( std::unique(v.begin(), v.end()), v.end());
如果您想保存元素的顺序,可以使用std::remove_if
和std::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( ) );
}