c++ unqiue 配合erase 去重

unique “去除相邻的相同元素” 实际并未去除  只是把不重复的依次移动到了前面 实现方法如下:

iterator My_Unique (iterator first, iterator last)
{
  if (first==last) return last;
 
  iterator result = first;
  while (++first != last)
  {
    if (!(*result == *first)) 
      *(++result)=*first;
  }
  return ++result;
}

但是unique 返回了++result  因此可以配合erase删除区间

a.erase(unique(a.begin(), a.end()), a.end());