现有一个不递减的序列a[10] = {1, 1, 1, 3, 3, 5, 5, 5, 5, 6}
数组元素n=10;
upper_bound(a,a+n,k)
返回容器中第一个大于k的元素的地址
lower_bound(a,a+n,k)
返回容器中第一个大于等于k的元素的地址
没错,两个函数的区别就是lower_bound多了个等于
需要注意的是函数返回的都是元素地址
因此,这样就可以直接打印出元素。。
cout << *upper_bound(a, a + 10, 3) << endl;
cout << *lower_bound(a, a + 10, 3) << endl;
若要返回数组下标,只要
cout << upper_bound(a, a + 10, 3) - a << endl;
cout << lower_bound(a, a + 10, 3) - a << endl;
本文详细解析了C++ STL中的upper_bound和lower_bound函数,通过一个不递减序列的例子,阐述了这两个函数如何查找指定元素的边界位置,并介绍了如何获取元素的地址或数组下标。
1350





