2016-01-25 40 views
0

我有一個存儲在其中的重複單詞的向量。我如何刪除重複項?例如:如果矢量有apple, orange, pear, apple, grape, grape,我希望它只有apple, orange, pear, grape。我嘗試使用unique,但它沒有奏效。我做錯了嗎?如何從矢量中刪除重複的單詞?

+3

郵報,沒碼不起作用,我們無法推斷您的文本中的錯誤代碼 – EdChum

+2

[Sort](http://en.cppreference.com/w/cpp/algorithm/sort)向量,然後[刪除連續的重複項](http: //en.cppreference.com/w/cpp/algorithm/unique)。 –

回答

4

使用std ::排序和擦除:

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()); 
} 
+0

漂亮華麗的男人! –

+0

有沒有可能沒有排序?我正在閱讀文件中的內容,並且想跟蹤它們出現的順序 – agentR12994

+0

是的。你可以'std :: remove_if'和'std :: set'來保存獨特的元素。更新了答案。 – malchemist

相關問題