vector是一个很好用的东西
unique也是一个很好用的东西
但是两个东西似乎直接用起来没有效果啊
怎么回事啊。。
首先,我们要知道unique的写法是什么
template <class ForwardIterator>
ForwardIterator unique (ForwardIterator first, ForwardIterator last)
{
if (first==last) return last;
ForwardIterator result = first;
while (++first != last)
{
if (!(*result == *first)) // or: if (!pred(*result,*first)) for version (2)
*(++result)=*first;
}
return ++result;
}
也就是说,unique是不断后面不重复的元素移到前面来
然后返回最后一个元素的位置,也就是新元素的大小
因此,你可以发现
如果直接:
sort(vec.begin(),vec.end());
unique(vec.begin(),vec.end())
对2,2,4进行排序,可以得到
2
,
4
,
4
2,4,4
2,4,4
那怎么办呢?
sort(vec[u].begin(),vec[u].end());
vec[u].erase(unique(vec[u].begin(),vec[u].end()),vec[u].end());
把后面的删掉就好了