C++ STL upper_bound和lower_bound
现有一个不递减的序列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多了个等于需要注意的是函数返回的都是元素地址因此,这样就...
·
现有一个不递减的序列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;
其实两个函数原理都是简单二分,因此自己写一下也挺方便的… …
更多推荐
已为社区贡献4条内容
所有评论(0)