转自:http://www.cnblogs.com/cobbliu/archive/2012/05/21/2512249.html
lower_bound(first, last, val)算法返回一个非递减序列[first, last)中第一个 >=val 的位置。
upper_bound(first, last, val)算法返回一个非递减序列[first, last)中第一个 >val 的位置。
lower_bound和upper_bound如下图所示:
应用实例:
#include <stdio.h>
#include <algorithm>
using namespace std;
int main()
{
int a[100]={0,1,2,2,2,3,4,5,6,7,8,9};
printf("%d\n", upper_bound(a, a+12, 2)-a); //返回 > 2 的数组下标
printf("%d\n", lower_bound(a, a+12, 2)-a); //返回 >= 2 的数组下标
return 0;
}