unique()–去重 (Ps:要先进行排序,保证重复元素相邻)

unique(A.begin(),A.end())

但是注意这里并没有删除元素,只是把元素移到了末尾
下面进行调试详细了解:
依次往A中放1, 1, 1, 2, 2
然后调用unique()
在这里插入图片描述
如果要切实删除的话,进行如下步骤:

vector<int>::iterator new_end = unique(c.begin(), c.end());
c.erase(new_end, c.end());

使用erase删除末尾一段即完成了去重 ~~

unique会把相邻重复元素全部丢到队列末尾,只留下一个在原队列
而且, unique() 的返回值就是被后置元素的“首地址”(迭代器) ,即是上述例子里下标为 2 的位置。
利用好unique的返回值, 然后用erase删除对应区间(即重复部分)即可完成去重操作

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐