我需要从以下形式的大小为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中删除重复的元素。
我尝试将标记为重复问题的方法,但是这也变得很慢
答案 0 :(得分:0)
当您从向量中删除元素时,应移动其后面的所有元素。创建另一个向量,根据第一个向量的大小保留空间,然后从第一个向量中复制所有唯一元素会更快(检查唯一性的方法很好,只需使用unordered_set而不是set)。