C++中stl库的标准二分函数

前言

  在以前遇到二分的题目都是手动实现二分,最近做题发现直接使用STL中的二分函数方便快捷还不会出错。

注意:使用二分函数前必须加上头文件#include<algorithm>

常用的二分函数有lower_bound()、upper_bound()、binary_search()

1.binary_search:查找目标值,若目标值存在则返回true,否则返回false

2.lower_bound:返回大于或等于目标值的第一个位置

3.upper_bound:返回大于目标值的第一个位置

三个函数的用法可参考sort()函数

都有三个参数:分别为数组的起始位置、数组的终止位置(取不到)以及要查找的目标值

/*注意因为lower_bound和upper_bound函数返回值是一个指针,所以减去数组的指针就是int变量了*/

#include<iostream>
#include<algorithm>
using namespace std;

int main()
{
	
	int a[6]= {1,2,3,3,5,6};
	
	bool flag = binary_search(a,a+6,3); //找得到,返回值为true 1
	bool flag1 = binary_search(a,a+6,4); //找不到,返回值为false 0
	
	//lower_bound 和 upper_bound 需要减去数组的起始地址
	int x = lower_bound(a,a+6,3) - a; //找的到,返回上界2

	int x1 = upper_bound(a,a+6,3) - a; //找的到,返回第一个大于该值的地址4
	
	cout << flag<<endl;
	cout << flag1<<endl;
	cout << x<<endl;
	cout << x1<<endl;
	
	return 0;
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值