c++lower_bound()、upper_bound()和find()

1.lower_bound()函数:
给定一个数组,输入目标值,该函数查找第一个大于或等于该值的地址,用这个地址减去第一个地址,得到的就是第一个大于等于目标值的值的下标。
从小到大存入数组v:

vector<int>v;
	v.push_back(1);
	v.push_back(1);
	v.push_back(4);
	v.push_back(5);

如果要查找第一个大于等于2的值的下标

int vv =lower_bound(v.begin(), v.end(), 2)-v.begin();
/****输出****/
2

若要查找的数的大小超过了原数组最大值,则直接插入数组下一个地址

int vv =lower_bound(v.begin(), v.end(), 6)-v.begin();
cout<<vv;
/****输出****/
4

如果要查找第一个大于等于2的值

int v2 = *lower_bound(v.begin(), v.end(), 3);
cout<<v2;
/****输出****/
4

2.upper_bound()函数:
给定一个数组,查找第一个大于给定值的值的地址:
查找第一个大于2的值的下标

int aa = upper_bound(v.begin(), v.end(), 2) - v.begin();
cout<<aa;
/****输出****/
2

如果要查找的值大于或等于数组里的最大值时,直接将这个要查找的值插入到数组中:

int aa = upper_bound(v.begin(), v.end(), 5) - v.begin();
cout<<aa;
/****输出****/
4

3.string中的find函数
用于寻找字符串中某个字符的下标,如果存在下标,返回下标,如果不存在下标返回-1。
rfind()函数:从字符串右边开始查找

#include<iostream>;
#include<algorithm>
using namespace std;
int main()
{
	string a = "wydwrgwflbb";
	int k1 = a.find('l');//查找字符串中字符为l的
	int k2 = a.find('b');//返回查找到的第一个b的下标
	int k3 = a.find('z');//不存在,返回-1
	int k4 = a.find('w', 4);//从下标4(包括4)开始找
	int k5 = a.rfind('f');//从右边开始找
	int k6 = a.rfind('w', 5);//从右边数第6个开始找
	cout << k1 << endl << k2<< endl << k3<<endl<<k4<<endl<<k5<<endl<<k6;
	return 0;
}
/****输出****/
8
9
-1
6
7
3
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快请我吃麦当当

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值