当前位置: 首页 > news >正文

查找函数【C++】

二分查找函数

lower_bound(起始地址, 末尾地址, target):查找第一个大于等于target目标值的位置

upper_bound(起始地址, 末尾地址, target):查找第一个大于target目标值的位置

binary_search(起始地址, 末尾地址, target):查找target是否存在于数组或vector中,找到返回true,否则返回false

这三种方法都是采用的二分查找实现的函数,用于有序数组或vector等,查找效率较高,实际写题时,直接用能较少很多代码量。下面来看看示例吧:

#include<bits/stdc++.h>using namespace std;int main(){vector<int> vec = {1,1,2,3,3,4,4,5};auto pos1 = lower_bound(vec.begin(), vec.end(), 2) - vec.begin();auto pos2 = upper_bound(vec.begin(), vec.end(), 2) - vec.begin();auto flag = binary_search(vec.begin(), vec.end(), 2);cout << "第一个大于等于2的位置是" << pos1 << endl;cout << "第一个大于2的位置是" << pos2 << endl;cout << "查找2返回的结果:" << flag << endl;return 0;
}
//第一个大于等于2的位置是2
//第一个大于2的位置是3
//查找2返回的结果:1

字符串查找函数

s1.find(s2):在s1字符串中查找s2,查找到返回第一个字符的位置,查找失败返回s1.npos,这个其实是一个特别标志,也可以看成一个数字,是4294967295,即s1.npos=4294967295

#include<bits/stdc++.h>using namespace std;int main(){string s = "abcdabef";cout << s.find('b') << endl;cout << s.find("ab") << endl;cout << s.find("cda") << endl;cout << s.find("cde") << endl;return 0;
}

string.find()函数用法

1.返回任意字符s1在s中第一次出现的位置,s1为字符,不能为字符串  'a'  "a"都可以

 position=s.find_first_of(s1);

2.从字符串s下标为a开始查找字符串s1,返回起始位置  s.find(s1,a); 查找不到返回-1

相关文章:

  • Pandas中的日期时间date处理
  • 进程和线程的区别、联系与典型应用场景
  • OpenWrt 与 Docker:打造轻量级容器化应用平台技术分享
  • 【不同名字的yolo的yaml文件名是什么意思】
  • window.location.href的用法
  • 中国矿业大学iGMAS分析中心介绍
  • 天机学堂day10作业,完善兑换优惠券功能
  • HashMap底层原理 什么是哈希表?哈希冲突?如何处理哈希冲突?
  • 联合体和枚举类型
  • Python 虚拟环境管理:venv 与 conda 的选择与配置
  • 关于STM32f1新建工程
  • 云原生--核心组件-容器篇-1-Docker和云原生关系(Docker是云原生的基石)
  • LVGL移植高通矢量字库GT5SLAD3BFA
  • 前端开发实用技巧:封装通用下载导出文件或图片方法
  • AXOP34062: 40V双通道运算放大器
  • OpenCV中的SIFT特征提取
  • 特斯拉宣布启动自动驾驶网约车测试,无人出租车服务进入最后准备阶段
  • JAVA---面向对象(下)
  • Base64编码原理:二进制数据与文本的转换技术
  • Pandas 数据导出:如何将 DataFrame 追加到 Excel 的不同工作表
  • 内蒙古纪检干部刘占波履新呼和浩特,曾参与涉煤腐败倒查20年工作
  • “五一”假期云南铁路预计发送旅客超330万人次
  • 苏炳添任暨南大学体育学院院长
  • 记录发生真相,南沙岛礁生态调查纪实片《归巢》发布
  • 出发!陈冬、陈中瑞、王杰三名航天员领命出征
  • 中国建设银行原党委委员、副行长章更生严重违纪违法被开除党籍