我有
vector<string> data ; // I hold some usernames in it
在这个向量中,我有重复的元素,所以我想要删除这些元素。是否有任何算法或库函数可以删除重复的元素?
ex :
In data;
abba, abraham, edie, Abba, edie
After operation;
abba, abraham, edie, Abba
我有
vector<string> data ; // I hold some usernames in it
在这个向量中,我有重复的元素,所以我想要删除这些元素。是否有任何算法或库函数可以删除重复的元素?
ex :
In data;
abba, abraham, edie, Abba, edie
After operation;
abba, abraham, edie, Abba
如果你可以对容器中的元素进行排序,那么一个直观且相对高效的解决方案是:
std::sort(data.begin(), data.end());
data.erase(std::unique(data.begin(), data.end()), data.end());
stable_sort
会不会更好呢? - Naveen我不确定有一个真正好的方法来做到这一点。 我会先排序(如果您需要原始数据保持不变,则在另一个数组中),然后再运行它。
"set" 不允许重复。您可以使用它来过滤掉重复项。
vector
中的顺序。 - Naveenstd::unique
应该只需要对排序后的序列进行一次遍历。你所说的“当找到一个重复项时,它会执行很多移动操作”是什么意思? - James McNellis