C++ 二分查找函数lower_bound() 和 upper_bound()

lower_bound() 和 upper_bound() 是 C++ 标准库中的函数,用于在有序序列中查找目标值的插入位置。

lower_bound() 函数:

lower_bound() 函数返回一个迭代器,指向第一个不小于目标值的元素位置。

template<class ForwardIt, class T>
ForwardIt lower_bound(ForwardIt first, ForwardIt last, const T& value);
  • firstlast :表示要搜索的有序序列的范围,[first, last) 是一个左闭右开区间。
  • value :要查找的目标值。

lower_bound() 函数的返回值是一个迭代器,指向序列中第一个不小于目标值的元素的位置。如果序列中不存在不小于目标值的元素,则返回迭代器指向的位置为序列的末尾(即 last)。

upper_bound() 函数:

upper_bound() 函数返回一个迭代器,指向第一个大于目标值的元素位置。

template<class ForwardIt, class T>
ForwardIt upper_bound(ForwardIt first, ForwardIt last, const T& value);
  • firstlast :表示要搜索的有序序列的范围,[first, last) 是一个左闭右开区间。
  • value :要查找的目标值。

upper_bound() 函数的返回值是一个迭代器,指向序列中第一个大于目标值的元素的位置。如果序列中不存在大于目标值的元素,则返回迭代器指向的位置为序列的末尾(即 last)。

C++ 代码示例:

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

int main() {
    vector<int> nums = {1, 2, 3, 4, 4, 5, 6, 7};
    int target = 4;

    // 使用 lower_bound() 函数查找插入位置
    auto lb = lower_bound(nums.begin(), nums.end(), target);
    cout << "第一个不小于目标值4的元素的位置: " << distance(nums.begin(), lb) << endl;

    // 使用 upper_bound() 函数查找插入位置
    auto ub = upper_bound(nums.begin(), nums.end(), target);
    cout << "第一个大于目标值4的元素的位置: " << distance(nums.begin(), ub) << endl;

    return 0;
}

在这里插入图片描述

以上代码演示了如何使用 lower_bound() 和 upper_bound() 函数在有序序列中查找目标值的插入位置。给定一个有序序列 nums 和目标值 target,通过 lower_bound() 和 upper_bound() 函数找到第一个不小于目标值的位置和第一个大于目标值的位置。

希望这个解释和代码示例能够帮助你理解 lower_bound() 和 upper_bound() 函数的原理和使用方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/417179.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

怎么根据输入的网站url获得域名及主机ip地址(代码)

好久没更新csdn了。24年二月最后一天&#xff0c;写篇文章吧&#xff0c;作为24年第一篇文章&#xff0c;是不是最后一篇我就不知道了。 最近在写端口扫描的代码&#xff0c;输入是网站的url&#xff0c;输出是开放的端口。 首先就要将输入的网站url转化为域名和主机ip地址&a…

方格分割644--2017蓝桥杯

1.用dfs解决&#xff0c;首先这题的方格图形就很像一个走迷宫的类型&#xff0c;迷宫想到dfs&#xff0c;最中心点视为起点&#xff0c;起点有两个小人在这个方格里面对称行动&#xff0c;直到走出迷宫&#xff08;一个人走出来了另一个人就也走出来了&#xff0c;而走过的点会…

0代码自动化测试:RF 框架实现企业级 UI 自动化测试!

RobotFramework框架可以作为公司要做自动化 但是又不会代码的一种临时和紧急情况的替代方案&#xff0c;上手简单。 前言 现在大家去找工作&#xff0c;反馈回来的基本上自动化测试都是刚需&#xff01;没有自动化测试技能&#xff0c;纯手工测试基本没有什么市场。 但是很多人…

入栏需看——《python》专栏介绍专栏目录

《python》专栏介绍&专栏目录 专栏地址&#xff1a;点击跳转 专栏导航如下&#xff1a; 文章目录 &#x1f330;基础篇&#x1f330;自动篇&#x1f330;自动篇-办公&#x1f330;自动篇-运维 &#x1f330;分享篇&#x1f330;题库篇&#x1f381;产品篇&#x1f330;可视…

虚拟机看不到共享文件夹

johnjohn-virtual-machine:/mnt/hgfs$ cat /etc/issue Ubuntu 20.04.6 LTS \n \l 看下是否挂载 johnjohn-virtual-machine:/mnt/hgfs$ vmware-hgfsclient FPGAs_AdaptiveSoCs_Unified_2023.2_1013_2256 xilinx 取消挂载 johnjohn-virtual-machine:/mnt/hgfs$ sudo umount /mn…

网络——DHCP服务器、DNS服务器实验

网络——DHCP服务器、DNS服务器实验 一、DHCP服务器实验 DHCP——动态主机配置协议&#xff0c;用来管理ip地址的分配。网络中的每台计算机都有至少一个ip地址。在Windows网络连接对话框中可以设置成自动获取ip地址&#xff0c;这样主机作为DHCP client就可以自动从DHCP serve…

算法 - 【二叉树中的第 K 大层和】

二叉树中的第 K 大层和 题目示例1示例2 分析代码 题目 给你一棵二叉树的根节点 root 和一个正整数 k 。树中的层和是指同一层上节点值的总和。返回树中第 k 大的层和&#xff08;不一定不同&#xff09;。如果树少于 k 层&#xff0c;则返回 -1 。注意&#xff0c;如果两个节点…

前端mock数据 —— 使用Apifox mock页面所需数据

前端mock数据 —— 使用Apifox 一、使用教程二、本地请求Apifox所mock的接口 一、使用教程 在首页进行新建项目&#xff1a; 新建项目名称&#xff1a; 新建接口&#xff1a; 创建json&#xff1a; 请求方法&#xff1a; GET。URL&#xff1a; api/basis。响应类型&#xff1…

Linux-nginx服务

一.Nginx概述 1.定义 一款高新能、轻量级Web服务软件 系统资源消耗低 对HTTP并发连接的处理能力高 单台物理服务器可支持30 000&#xff5e;50 000个并发请求。 2.Nginx模块作用 &#xff08;1&#xff09;main模块 全局配置模块&#xff0c;所有模块都要执行遵守&#xf…

如何使用Docker部署WBO容器并实现固定公网地址访问本地白板界面

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&…

【数学】【深度优先搜索】【图论】【欧拉环路】753. 破解保险箱

作者推荐 动态规划的时间复杂度优化 本文涉及知识点 数学 深度优先搜索 图论 欧拉环路 LeetCode753. 破解保险箱 有一个需要密码才能打开的保险箱。密码是 n 位数, 密码的每一位都是范围 [0, k - 1] 中的一个数字。 保险箱有一种特殊的密码校验方法&#xff0c;你可以随意…

阿里云服务器大降价20%,简单拥有五年三台2h4gECS,组建公网集群

要在阿里云ECS上组建集群&#xff0c;您可以按照以下步骤进行操作&#xff1a; 创建ECS实例&#xff1a;登录阿里云控制台&#xff0c;选择ECS实例&#xff0c;点击“创建实例”按钮。根据实际需求选择实例的配置参数&#xff0c;例如实例规格、操作系统、网络等。根据需要选择…

如何利用IP代理高效采集产品数据,打造爆品?

文章目录 一、什么是网络爬虫&#xff1f;二、普通人如何通过网络爬虫赚钱&#xff1f;2.1、心得分享2.2、工具自动化收集信息 三、 动态IP代理3.1、覆盖范围3.2、性价比3.3、教程中心F&Q使用教程 3.4、在网络数据采集中的重要性 四、实战应用案例一&#xff1a;ebay电商【…

Achronix以创新FPGA技术推动智能汽车与先进出行创新

全球领先的高性能现场可编程门阵列&#xff08;FPGA&#xff09;和嵌入式FPGA&#xff08;eFPGA&#xff09;半导体知识产权&#xff08;IP&#xff09;提供商Achronix Semiconductor公司宣布&#xff0c;该公司将参加由私募股权和风险投资公司Baird Capital举办的“Baird车技术…

汽车后视镜反射率检测仪厂家

随着汽车工业的快速发展&#xff0c;汽车后视镜作为驾驶员观察车辆周围环境的重要工具&#xff0c;其性能和质量对于交通安全至关重要。汽车后视镜的反射率检测仪是一种用于检测汽车后视镜反射性能的专业设备&#xff0c;其重要性不言而喻。本文将重点介绍汽车后视镜反射率检测…

Linux|centos7|yum和编译安装ImageMagick记录

一&#xff0c; yum安装imagemagick imagemagick这个软件是图像文件的处理神器&#xff0c;可以文字转图像以及图像的剪辑等等工作&#xff0c;也是配合人工智能工程的不可或缺的工具&#xff0c;具体的用处和特点就不在这里废话了&#xff0c;有兴趣的百度就行了 本次是在…

40、网络编程/TCP和UDP通信模型练习20240229

一、使用TCP模型创建服务器和客户端完成简单通信。 服务器代码&#xff1a; #include<myhead.h> #define SER_IP "192.168.32.130" #define SER_PORT 8888 int main(int argc, const char *argv[]) {//1.创建监听的套接字int sfd-1;sfdsocket(AF_INET,SOCK_S…

Ubuntu系统下DPDK环境搭建

目录 一.虚拟机配置1.添加一个网卡(桥接模式)2.修改网卡类型3.修改网卡名称4.重启虚拟机5.查看网卡信息6.dpdk配置内存巨型页 三 DPDK源代码下载和编译1.下载源代码2.解压源代码3.安装编译环境4.编译5.设置dpdk的环境变量6.禁止多队列网卡7.加载igb_uio模块8.网卡绑定9.验证测试…

手把手-服务器免密配置

文章目录 介绍一、测试机器是否免密1、在A机器上输入ssh admin192.168.2.101&#xff0c;回车确认&#xff0c;需要输入密码 二 、生成公钥和私钥1、在A机器上输入ssh-keygen -t ecdsa&#xff08;连续三次回车&#xff0c;即可在本地生成公钥和私钥&#xff0c;不设置密码&…

【AIGC大模型】InstantID 赏析

论文地址&#xff1a;https://arxiv.org/abs/2401.07519 InstantID 主页&#xff1a;https://instantid.github.io/ Demo &#xff1a;https://huggingface.co/spaces/InstantX/InstantID code&#xff1a; InstantID/InstantID: InstantID : Zero-shot Identity-Preserving…