#include<iostream>
#include<functional>
#include<algorithm>
using namespace std;
int main() {
int a[5] = { 0, 1, 2, 2, 5 };
int b[5] = { 4, 3, 2, 1, 0 };
//默认都是重载 less<>() 适用 小 到 大
//lower_bound 返回第一个大于等于num 的地址
//upper_bound 。。。。。。。大于num 。。。
cout << lower_bound(a, a + 5, 1) - a << endl;
cout << lower_bound(a, a + 5, 3) - a << endl;
cout << upper_bound(a, a + 5, 2) - a << endl;
cout << upper_bound(a, a + 5, 5) - a << endl;
cout << endl;
//重载了greater<类型>() 适用大 到 小 序列
//lower_bound 返回第一个小于等于num 的地址
//upper_bound 。。。。。。。小于num 。。。
cout << lower_bound(b, b + 5, 1, greater<int>()) - b << endl;
cout << lower_bound(b, b + 5, 3, greater<int>()) - b << endl;
cout << upper_bound(b, b + 5, 2, greater<int>()) - b << endl;
cout << upper_bound(b, b + 5, 5, greater<int>()) - b << endl;
return 0;
}