从大型未排序向量中删除重复元素,同时保留其顺序

时间:2015-08-28 16:47:27

标签: c++ vector

我需要从以下形式的大小为800万个元素的大型未排序向量中删除重复项:

vector<unsigned> unsortedVec;

删除重复项后,我需要保留未排序元素的位置。例如,如果我的unsortedVec是:

6,98,1,938,98,736,0,1

然后在删除重复后,我的未分类矢量应为:

6,98,1,938,736,0

即。只删除后面的重复值,并保持元素的顺序不变。

为此,我尝试在向量中创建一组唯一元素&#34; unsortedVec&#34;并继续迭代,如果元素已经存在于集合中,那么我没有将它们插入&#34; unsortedVec&#34;。鉴于我的unsortedVec的大小,这变得非常慢。有什么方法可以从未分类的vec中删除重复的元素。

我尝试将标记为重复问题的方法,但是这也变得很慢

1 个答案:

答案 0 :(得分:0)

当您从向量中删除元素时,应移动其后面的所有元素。创建另一个向量,根据第一个向量的大小保留空间,然后从第一个向量中复制所有唯一元素会更快(检查唯一性的方法很好,只需使用unordered_set而不是set)。