(C/C++学习) 39. 记录自己做题经常用到的函数-长更

一. lower_bound( ) 和 upper_bound( ) 都是利用二分查找的方法在一个排好序的数组中进行查找的。

在从小到大的排序数组中:

a. lower_bound( begin,end,num):从数组的begin位置到 end-1 位置二分查找第一个大于或等于num 的数字,找到返回该数字的地址,不存在则返回 end。

    注意:可以通过返回的地址减去起始地址begin, 得到 num 在数组中的下标。

b. upper_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于num的数字,找到返回该数字的地址,不存在则返回end。

    注意:可以通过返回的地址减去起始地址begin, 得到 num 在数组中的下标。

二. list::splice实现 list 拼接的功能-将源 list 的内容部分或全部元素删除,并插入到目的 list. 函数有以下三种声明:

1. void splice ( iterator position, list<T,Allocator>& x );

2. void splice ( iterator position, list<T,Allocator>& x, iterator it );

3. void splice ( iterator position, list<T,Allocator>& x, iterator first, iterator last );

说明:position 是要操作的list对象的迭代器, list& x 为被剪的对象

对于一:会在 position 后把 list&x 所有的元素到剪接到要操作的list对象
对于二:只会把 it 的值剪接到要操作的list对象中
对于三:把 first 到 last 之间的元素剪接到要操作的list对象中

 三. lexicographical_compare(first1, last1,first2, last2, comp) 可以比较由开始和结束迭代器定义的两个序列。它的前两个参数定义了第一个序列,第 3 和第 4 个参数分别是第二个序列的开始和结束迭代器。默认用 < 运算符来比较元素,但在需要时,也可以提供一个实现小于比较的函数对象作为可选的第 5 个参数。如果第一个序列的字典序小于第二个,这个算法会返回 true,否则返回 false。所以,返回 false 表明第一个序列大于或等于第二个序列。序列是逐个元素比较的。第一对不同的对应元素决定了序列的顺序。如果序列的长度不同,而且短序列和长序列的初始元素序列匹配,那么短序列小于长序列。长度相同而且对应元素都相等的两个序列是相等的。空序列总是小于非空序列。

posted @ 2020-08-28 10:44  退後。  阅读(151)  评论(0编辑  收藏  举报