当前位置: 首页 > 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


http://www.mrgr.cn/news/100080.html

相关文章:

  • 二项式分布html实验
  • Linux学习笔记之环境变量
  • 全栈开发的未来:低代码与AI辅助编程的边界探索
  • Linux网络编程 原始套接字与ARP协议深度解析——从数据包构造到欺骗攻防
  • 【linux】Chrony服务器
  • 区间和数量统计 之 前缀和+哈希表
  • AI 开发工具提示词集体开源!解锁 Cursor、Cline、Windsurf 等工具的核心逻辑
  • SpringBoot 学习
  • python_BeautifulSoup提取html中的信息
  • 基于HTML+CSS实现的动态导航引导页技术解析
  • OpenCv高阶(十)——光流估计
  • Linux软硬链接和动静态库(20)
  • Arm GICv3中断处理模型解析
  • 【深度强化学习 DRL 快速实践】策略梯度算法 (PG)
  • Pycharm(十六)面向对象进阶
  • 红黑树——如何靠控制色彩实现平衡的?
  • DPIN河内AI+DePIN峰会:共绘蓝图,加速构建去中心化AI基础设施新生态
  • 【Harmony OS】组件
  • Java 安全:如何实现用户认证与授权?
  • Chrmo手动同步数据