您的位置:首页 > 其它

一些有用的小函数整理

2015-02-06 23:49 120 查看
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这个位置。函数的实现方法应该是线性时间选择。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: