一些有用的小函数整理

来源:互联网 发布:测颜值软件 编辑:程序博客网 时间:2024/05/20 04:31

1.unique函数

       unique()函数是一个去重函数,STL中unique的函数 unique的功能是去除相邻的重复元素(只保留一个),还有一个容易忽视的特性是它并不真正把重复的元素删除。他是c++中的函数,在头文件要加algorithm中,具体用法如下:

       int num[100];


       unique(num,mun+n)返回的是num去重后的尾地址,之所以说比不真正把重复的元素删除,其实是,该函数把重复的元素一到后面去了,然后依然保存到了原数组中,然后返回去重后最后一个元素的地址,因为unique去除的是相邻的重复元素,所以一般用之前都会要排一下序。


2.lower_bound函数

       lower_bound()返回一个 iterator 它指向在[first,last)标记的有序序列中可以插入value,而不会破坏容器顺序的第一个位置,而这个位置标记了一个不小于value 的值,原理为二分查找。

       调用形式为 lower_bound(a,a+n,val);

        第一个版本

          

template<classForwardIterator,classT>ForwardIteratorlower_bound(ForwardIteratorfirst,ForwardIteratorlast,constT&val);


例如,有如下序列:
ia[]={12,15,17,19,20,22,23,26,29,35,40,51};
用值21调用lower_bound(),返回一个指向22的iterator。用值22调用lower_bound(),也返回一个指向22的iterator。第一个版本使用底层的 < (小于)操作符,第二个版本根据comp进行排序和比较。

注意事项
调用lower_bound之前必须确定序列为有序序列,否则调用出错。第一个版本排序根据底层的 <(小于)操作符,第二个版本根据comp进行排序。

3.nth_element()函数

nth_element顾名思义就是找到一段连续的区间内第n大的数,调用方式为nth_element(array,array+n,array+len);无返回值,函数将第n大的数放在了n这个位置。函数的实现方法应该是线性时间选择。

0 0
原创粉丝点击