如何有效地删除稳定排序向量的所有重复项,同时保持最后一个元素而不是第一个?
通过这样做来保持第一个是相当简单的:
auto it = std::unique( vector.begin(), vector.end() ,[](string a, string b){ return ! (a.compare(b));});
vector.erase(it,vector.end());
但是我不知道如何在保留最后一个重复元素的同时做同样的事情。 它可以用反向迭代器完成,从向量的末尾开始独特的搜索过程,但是我在使用擦除函数时遇到了麻烦。
编辑: 我通过修改排序方法找到了解决方案。保留第一个副本现在就足够了。
答案 0 :(得分:2)
auto it = std::unique( vector.rbegin(), vector.rend() ,[](string a, string b){ return ! (a.compare(b));});
vector.erase(vector.begin(),it.base());