我有
vector<string> data ; // I hold some usernames in it
在那个向量中,我有重复的元素,所以我想擦除这个/这些元素。是否有任何算法或库函数来擦除重复的元素?
ex :
In data;
abba, abraham, edie, Abba, edie
After operation;
abba, abraham, edie, Abba
答案 0 :(得分:10)
如果您可以对容器中的元素进行排序,那么直接且相对有效的解决方案将是:
std::sort(data.begin(), data.end());
data.erase(std::unique(data.begin(), data.end()), data.end());
答案 1 :(得分:0)
我不确定是否有一个非常好的方法。 我要做的就是排序(在不同的数组中,如果你需要原文),然后贯穿它。
答案 2 :(得分:0)
“set”不允许重复。您可以使用它来过滤掉重复项。
答案 3 :(得分:0)
如果你真的需要有效地做,那么应该首先进行排序,然后自己通过容器而不是使用std :: unique,将唯一的项目提取到新的向量中,然后结束交换。
我刚检查了std :: unique的源代码,找到一个副本时会做很多动作,移动会伤害矢量的性能。