stl给程序员提供了很多很好很强大的算法,但美中不足的是各种算法的使用方法不太统一,很容易给初学者造成困惑。比如sort算法,用法如下:
sort(v.begin(), v.end());
对于unique算法,如果像下面这样用:
unique(v.begin(), v.end());
看起来不错,可惜结果是错误的。应该这样用:
v.erase(unique(v.begin(), v.end()), v.end());
道理很简单,unique返回的是不重复的元素和多余元素的分界点。