数组去重unique

昨天晚上笔试,第一题,涉及到数组去重,写了好几种方法,都没有AC ,今天突然看到大佬用的函数unique,才明白原来C++有自带的去重函数。


现在总结一下unique,unique的作用是“去掉”容器中相邻元素的重复元素(不一定要求数组有序),它会把重复的元素添加到容器末尾(所以数组大小并没有改变),而返回值是去重之后的尾地址,下面举个例子。

由于返回的是容器末尾,所以如果想得到去重后的size,需要减去初始地址,lower_bound是得到地址,稍微不同。

  sz = unique(b + 1,b + n + 1)-(b + 1);
  sz = unique(a,a + n) - a;

对比一下lower_bound:

  pos=lower_bound(b + 1,b + sz + 1,a[i]) - b;


猜你喜欢

转载自blog.csdn.net/piaoliangjinjin/article/details/79683675