lower/upper _bound & unique

hicc0305

2018-08-10 19:24:16

Personal

三个函数由于返回的是容器末尾,所以如果想得到去重后的size,需要减去初始地址 ### lower_bound 函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置 如: k=lower_bound(a,a+n,val)-a; k=lower_bound(v.begin(),v.end(),val)-v.begin(); ### upper_bound upper_bound并不是lower_bound反一下!返回的是大于val的第一个元素位置。。 举例:1,2,3,4,4,4,5,6 如果用lower_bound查找4的话返回的是第一个4的地址,也就是第四个 而upper_bound是返回的是5的地址,也就是第七个 ### unique unique的作用是“去掉”容器中相邻元素的重复元素(不一定要求数组有序),它会把重复的元素添加到容器末尾(所以数组大小并没有改变),而返回值是去重之后的尾地址,下面举个例子。 如: sz=unique(b+1,b+n+1)-(b+1); sz=unique(a,a+n)-a;