如何有效地刪除穩定排序向量的所有重複項,同時保持最後一個元素的順序而不是第一個?使用std :: unique和vector.erase刪除除最後一次出現的重複元素
這是相當簡單的做,以保持第一位:
auto it = std::unique(vector.begin(), vector.end() ,[](string a, string b){ return ! (a.compare(b));});
vector.erase(it,vector.end());
但我不知道如何做同樣的,同時保持過去的重複的元素。 它可能可以用反向迭代器完成,從矢量的末尾開始獨特的搜索過程,但我無法將其與使用擦除功能相結合。
編輯: 我通過修改排序方法找到了解決方案。現在保留第一個副本就足夠了。
'std :: unique'使用'ForwardIterators'和'operator ++'來完成它的目標。非常簡單的實現[這裏](http://www.cplusplus.com/reference/algorithm/unique/)。 但是,爲什麼會這麼重要,如果你刪除了第一個或最後一個出現的元素被稱爲「equal」? – Raja
我正在實現一個自定義地圖類型,我只想保留同一個鍵的最後一個初始化元素。 – Veritas