lower/upper _bound & unique
hicc0305
2018-08-10 19:24:16
三个函数由于返回的是容器末尾,所以如果想得到去重后的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;