这篇博客说是STL源码。。。。
https://www.cnblogs.com/cobbliu/archive/2012/05/21/2512249.html
头文件 algorithm
1、lower_bound()
沿用百度百科,这个函数有两个版本可用,lower_bound(*array, len, key), lower_bound(*array, len, key, cmp)
- 第一个函数函数查找的是,在左闭右开的区间内,第一个大于或等于 key 的数,返回值是该值的地址!
- 第二个函数就后面加了个自定义比较函数
所以一般用这个函数的时候要先排序,自己可以试试不排序。
#include <iostream> #include <algorithm> using namespace std; int main() { int a[1005], n; cin >> n; for(int i = 0;i < n;++i) cin >> a[i]; sort(a, a + n); int num; while(cin >> num && num) { int *it = lower_bound(a, a + n, num); cout << "地址 " << it << endl; cout << "位置 " << it - a + 1 << endl; if(it - a - n) cout << "值 " << *it << endl; //这里看了一些代码都没有判断,做题可能错 else cout << "不存在" << endl; } return 0; }
输入
6
4 6 2 10 8 12
5
15
输出
地址 0x6d62ac
位置 3
值 6
地址 0x6d62bc
位置 7
不存在
结构体的不会写。。。。。
2、upper_bound()
这个的算的是第一个大于 key 的数。。。没了???是的,这就完了,用法跟 lower_bound() 一样。