C++中二分法之upper_bound()、lower_bound、binary_search()函数
前言
- 数组、容器vector都适用,在头文件"algorithm"中
- 下面的例子是针对容器的,注意返回的是距离元素3最近的指针it,输出的是*it结果为元素4,假如我想得到位置而非具体的元素应该怎么办呢?这里有一个指针偏移的技巧,只需要减去起始位置的指针即可
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector<int> v;
int main()
{
for (int i = 1; i < 4; i++)
v.push_back(2 * i);//注意此时v中的元素本身就是有序的
vector<int>::iterator it = lower_bound(v.begin(), v.end(), 3);
cout << *it << endl;
return 0;
}
- 下面中的例子这里给出:
#include<iostream>
#include<algorithm>
#include<vector>
int test[11] = {1, 1, 3, 3, 6, 7, 8, 8, 8, 9, 10};
using namespace std;
int main(){
int pos1 = lower_bound(test, test+11, 8) - test;
int pos2 = upper_bound(test, test+11, 8) - test;
int pos3 = lower_bound(test, test+11, 5) - test;
int pos4 = upper_bound(test, test+11, 5) - test;
bool a = binary_search(test, test+11, 5);
bool b = binary_search(test, test+11, 3);
cout << "pos1: " << pos1 << endl;
cout << "pos2: " << pos2 << endl;
cout << "pos3: " << pos3 << endl;
cout << "pos4: " << pos4 << endl;
cout << "a: " << a << endl;
cout << "b: " << b ;
return 0;
}
输出结果:

一、upper_bound(起始地址,结束地址,要查找的数值)
- 功能:返回数组或容器中大于指定元素的下标(使用指针偏移技巧)或数值。
- 例子见前言,仔细思考。
二、lower_bound(起始地址,结束地址,要查找的数值)
- 功能:返回数组或容器中大于等于指定元素的下标(使用指针偏移技巧),如果出现相同的元素恰是指定元素即返回第一个等于元素的下标。
- 例子见前言,仔细思考。
三、binary_search(起始地址,结束地址,要查找的数值)
- 功能:查看数组或容器中指定元素是否存在,bool类型,存在返回1,否则返回0。
- 例子见前言,仔细思考。
C++中二分法之upper_bound()、lower_bound、binary_search()函数的更多相关文章
- STL中的二分查找———lower_bound,upper_bound,binary_search
关于STL中的排序和检索,排序一般用sort函数即可,今天来整理一下检索中常用的函数——lower_bound , upper_bound 和 binary_search . STL中关于二分查找的函 ...
- STL中的二分查找——lower_bound 、upper_bound 、binary_search
STL中的二分查找函数 1.lower_bound函数 在一个非递减序列的前闭后开区间[first,last)中.进行二分查找查找某一元素val.函数lower_bound()返回大于或等于val的第 ...
- MATLAB中白噪声的WGN和AWGN函数的使用
MATLAB中白噪声的WGN和AWGN函数的使用如下: MATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN.WGN用于产生高斯白噪声,AWGN则用于在某一 信号 ...
- FastReport调用Delphi中的人民币大写转换自定义函数
FastReport调用Delphi中的人民币大写转换自定义函数 FastReport调用Delphi中的人民币大写转换自定义函数 function TJzpzEdit1.MoneyCn(mmje ...
- Matlab中如何将(自定义)函数作为参数传递给另一个函数
假如我们编写了一个积分通用程序,想使它更具有通用性,那么可以把被积函数也作为一个参数.在c/c++中,可以使用函数指针来实现上边的功能,在matlab中如何实现呢?使用函数句柄--这时类似于函数指针的 ...
- 【SAP BusinessObjects】WEBI中的动态求和,累加函数的使用
在WEBI中,提供了这样一个函数: RunningSum([字段名]) 其作用是,将[字段名]这一列进行累加动态求和 对于需要进行计算累加值的列就不必写复杂的SQL,直接使用此函数即可解决.
- php中base64_decode与base64_encode加密解密函数
php中base64_decode与base64_encode加密解密函数,实例分析了base64加密解密函数的具体用法,具有一定的实用价值,需要的朋友可以参考下 本文实例讲述了php中base64_ ...
- Linux 多线程应用中如何编写安全的信号处理函数
http://blog.163.com/he_junwei/blog/static/1979376462014021105242552/ http://www.ibm.com/developerwor ...
- 博文推荐】Javascript中bind、call、apply函数用法
[博文推荐]Javascript中bind.call.apply函数用法 2015-03-02 09:22 菜鸟浮出水 51CTO博客 字号:T | T 最近一直在用 js 写游戏服务器,我也接触 j ...
随机推荐
- Unreal Engine 4 系列教程 Part 8:粒子系统教程
.katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...
- 微服务 SpringCloud + docker
最近看到微服务很火,也是未来的趋势,所以就去学习下 好,接下来我们来认识下spring cloud.一.什么是spring cloud?它的中文官网这样说: 微服务架构集大成者,云计算最佳业务实践. ...
- Spring的工具类StringUtils使用
我们经常会对字符串进行操作,spring已经实现了常用的处理功能.我们可以使用org.springframework.util.StringUtils 工具类帮我们处理字符串. 工具类整理如下: ...
- 使用git克隆github上的项目失败,报错error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
错误描述 今天在github上使用 git clone 某个项目代码的时, git clone https://github.com/XXXX/xxx-blog.git 下载速度很慢,然后下载一段时间 ...
- APP兼容性测试 (一) 机型选择概要
一.App兼容性问题有哪些 安装失败.启动失败.卸载失败,卸载不干净. 程序运行过程中闪退 部分控件显示不完整或者功能失效 屏幕显示异常 图片展示不全等 二.App兼容性测试的核心要点 测试软件是否能 ...
- CodeForces 574D Bear and Blocks
Limak is a little bear who loves to play. Today he is playing by destroying block towers. He built n ...
- linux (centos)增删改查用户命令
1,查看用户 cat /etc/passwd 2,删除用户 userdel 用户名 3,查看组 cat /etc/group 4,删除组 groupdel 组名 5.查看系统中有哪些用户: cut - ...
- Prometheus 监控K8S集群资源监控
Prometheus 监控K8S集群中Pod 目前cAdvisor集成到了kubelet组件内,可以在kubernetes集群中每个启动了kubelet的节点使用cAdvisor提供的metrics接 ...
- mac下安装php7.2、mysql5.7、nginx环境
本篇文章是通过homebrew安装,home brew对于Mac相当于centos 的yum一样方便简单,大家可以先去安装home brew.网上很多简单靠谱的例子,这里不写了 一.准备条件为了安装最 ...
- jQuery常用API之jQuery选择器
3.jQuery常用API 3.1 jQuery选择器 3.1.1 jQuery基础选择器 原生JS获取元素的方式很多.很杂,而且兼容性情况不一致,因此jQuery给我做了封装,是获取元素统一了标准 ...