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

微网站排版百度竞价电话

微网站排版,百度竞价电话,厦门好的做网站公司,全国十大电商排名lower_bound lower_bound 是 C 标准库算法&#xff0c;通常用于有序序列中查找第一个不小于给定值的元素。它属于 <algorithm> 头文件&#xff0c;并且是基于二分查找实现的&#xff0c;因此要求输入序列必须是有序的。 基本语法 #include <algorithm> // 引入算…

lower_bound

lower_bound 是 C++ 标准库算法,通常用于有序序列中查找第一个不小于给定值的元素。它属于 <algorithm> 头文件,并且是基于二分查找实现的,因此要求输入序列必须是有序的。

基本语法

#include <algorithm>  // 引入算法库Iterator lower_bound(Iterator first, Iterator last, const T& value);
  • firstlast 是迭代器,分别表示容器的起始位置和结束位置(不包括 last)。

  • value 是要在容器中查找的目标值。

  • 返回值是迭代器,指向第一个不小于 value 的元素。如果没有找到符合条件的元素,返回 last

使用条件

  • 容器中的元素必须是有序的,通常是按非递减顺序(从小到大)排列的。

  • 如果容器无序,需要先对容器进行排序,才能使用 lower_bound

返回值解释

  • 如果找到一个元素,其值不小于 value,返回指向该元素的迭代器。

  • 如果所有元素都小于 value,返回 last,即容器的末尾。

示例代码

示例 1:简单查找
#include <iostream>
#include <vector>
#include <algorithm>  // 需要引入algorithmint main() {std::vector<int> v = {1, 2, 4, 4, 5, 8, 10};int value = 4;auto it = std::lower_bound(v.begin(), v.end(), value);if (it != v.end()) {std::cout << "第一个不小于 " << value << " 的元素是: " << *it << std::endl;} else {std::cout << "没有找到不小于 " << value << " 的元素。" << std::endl;}return 0;
}

输出

第一个不小于 4 的元素是: 4

在这个例子中,lower_bound 返回了指向值为 4 的第一个元素的迭代器。

示例 2:未找到的情况
#include <iostream>
#include <vector>
#include <algorithm>int main() {std::vector<int> v = {1, 2, 4, 4, 5, 8, 10};int value = 12;auto it = std::lower_bound(v.begin(), v.end(), value);if (it != v.end()) {std::cout << "第一个不小于 " << value << " 的元素是: " << *it << std::endl;} else {std::cout << "没有找到不小于 " << value << " 的元素。" << std::endl;}return 0;
}

输出

没有找到不小于 12 的元素。

因为所有元素都小于 12,所以返回 v.end()

注意事项

  1. 容器必须有序:如果容器未排序,lower_bound 的结果是未定义的。

  2. 时间复杂度:由于使用二分查找,时间复杂度为 O(logn),其中 n 是容器中元素的数量。

  3. 自定义比较函数:如果需要使用自定义的顺序规则,可以提供一个比较函数作为参数,例如

    auto it = std::lower_bound(v.begin(), v.end(), value, custom_compare);

    其中 custom_compare 是一个函数对象,接收两个元素作为参数,返回一个布尔值,用于定义排序规则。

lower_bound 是一个非常实用的函数,特别适合在有序数据中进行高效的查找操作。

upper_bound

upper_bound 是 C++ 标准库中的一个算法函数,与 lower_bound 类似,它也用于有序序列中查找特定值的位置,但功能略有不同。upper_bound 用于查找第一个大于给定值的元素的位置。它同样基于二分查找实现,因此要求输入序列必须是有序的。

基本语法

#include <algorithm>  // 引入算法库Iterator upper_bound(Iterator first, Iterator last, const T& value);
  • firstlast 是迭代器,分别表示容器的起始位置和结束位置(不包括 last)。

  • value 是要在容器中查找的目标值。

  • 返回值是迭代器,指向第一个大于 value 的元素。如果没有找到符合条件的元素,返回 last

使用条件

  • 容器中的元素必须是有序的,通常是按非递减顺序(从小到大)排列的。

  • 如果容器无序,需要先对容器进行排序,才能使用 upper_bound

返回值解释

  • 如果找到一个元素,其值大于 value,返回指向该元素的迭代器。

  • 如果所有元素都小于或等于 value,返回 last,即容器的末尾。

示例代码

示例 1:简单查找
#include <iostream>
#include <vector>
#include <algorithm>  // 需要引入algorithmint main() {std::vector<int> v = {1, 2, 4, 4, 5, 8, 10};int value = 4;auto it = std::upper_bound(v.begin(), v.end(), value);if (it != v.end()) {std::cout << "第一个大于 " << value << " 的元素是: " << *it << std::endl;} else {std::cout << "没有找到大于 " << value << " 的元素。" << std::endl;}return 0;
}

输出

第一个大于 4 的元素是: 5

在这个例子中,upper_bound 返回了指向值为 5 的元素的迭代器。

示例 2:未找到的情况
#include <iostream>
#include <vector>
#include <algorithm>int main() {std::vector<int> v = {1, 2, 4, 4, 5, 8, 10};int value = 12;auto it = std::upper_bound(v.begin(), v.end(), value);if (it != v.end()) {std::cout << "第一个大于 " << value << " 的元素是: " << *it << std::endl;} else {std::cout << "没有找到大于 " << value << " 的元素。" << std::endl;}return 0;
}

输出

没有找到大于 12 的元素。

因为所有元素都小于或等于 12,所以返回 v.end()

注意事项

  1. 容器必须有序:如果容器未排序,upper_bound 的结果是未定义的。

  2. 时间复杂度:由于使用二分查找,时间复杂度为 O(logn),其中 n 是容器中元素的数量。

  3. 自定义比较函数:如果需要使用自定义的顺序规则,可以提供一个比较函数作为参数,例如

    auto it = std::upper_bound(v.begin(), v.end(), value, custom_compare);

    其中 custom_compare 是一个函数对象,接收两个元素作为参数,返回一个布尔值,用于定义排序规则。

  4. lower_bound 的区别

    • lower_bound 返回第一个不小于给定值的元素。

    • upper_bound 返回第一个大于给定值的元素。

    • 如果容器中存在多个相同的值,lower_bound 会返回第一个等于该值的元素,而 upper_bound 会返回第一个大于该值的元素。

应用场景

upper_bound 常用于以下场景:

  • 在有序序列中查找第一个大于某个值的元素。

  • 用于实现区间查找,例如结合 lower_boundupper_bound 来查找某个值的范围。

http://www.dtcms.com/wzjs/446712.html

相关文章:

  • 建网站的步骤和方法网站建设解决方案
  • 闲鱼网站建设厦门seo计费
  • 做的网站每年都要交费吗谷歌推广怎么做最有效
  • 精通网站建设惠城网站设计
  • 创新创业大赛项目计划书seo优化好做吗
  • 网站地图做几个深圳全网推广托管
  • 智联招聘网站怎么做两份简历独立站优化
  • 可信网站认证必须做北京网聘咨询有限公司
  • 做网站基本费用大概需要多少北京百度seo
  • 网站欢迎页代码手机百度网页版登录入口
  • 优惠券网站做代理怎么样黄山seo公司
  • 互联网网站建设计划书属于seo网站优化
  • 动态网站开发典型案例光盘电商运营工作内容
  • 新郑市网站建设南宁网络推广品牌
  • 做网站咋赚钱优化大师官网下载安装
  • 如何使用ftp上传网站平台连接
  • 团购网站怎么做上海网络关键词优化
  • wordpress安装卡住了seo海外
  • 河南做网站送记账网站seo优化总结
  • 广州网站的优化互联网广告
  • 网站制作网页设计怎么做网络广告推广
  • 银川网站建站公司中山360推广
  • 做门户网站的公司有哪些seo综合查询爱站
  • 网站如何更新内容从哪里找网络推广公司
  • 建设网站费用主要包括哪些广州网络推广
  • 北京做养生SPA的网站建设需要多少钱
  • 区域门户网站源码自己在家怎么做跨境电商
  • 三级分销网站制作中山谷歌推广
  • 做物流网站电话培训机构优化
  • 免费建立小程序网站搜索引擎有哪些好用