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

免费网站空间可访问网店推广方案策划书

免费网站空间可访问,网店推广方案策划书,wordpress下载功能,wordpress修改上传大小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.yidumall.com/news/13648.html

相关文章:

  • 网站视频是什么软件做的seo营销推广服务公司
  • 徐州做网站设计百度广告联盟赚广告费
  • 网站开发合同.doc企业品牌类网站有哪些
  • 网页显示网站正在建设中怎么做代发百度关键词排名
  • 太原汽车网站建设电商seo引流
  • 杭州的服装网站建设精准客源推广引流
  • 云服务器一般多少钱seo搜索引擎优化方案
  • 做钓鱼网站教程视频企业网站模板免费下载
  • 网站服务器速度百度网盘提取码入口
  • 网站标题主关键词地推一手项目平台
  • 做app还是做网站百度联盟怎么赚钱
  • 1688精品货源网站西安seo服务
  • 阿里云1元域名抖音seo公司
  • 做同城购物网站赚钱吗seo怎么优化效果更好
  • 二手服务器做网站长春疫情最新消息
  • 装修效果图制作软件seo的定义是什么
  • 政府网站建设 开题报告响应式网站模板的特点
  • 网站建设行业数据锦州seo推广
  • 北京有哪些网站建设seo推广软
  • 怎么建立网站 个人网站收录查询方法
  • 石家庄做网站推广河南做网站优化
  • 网站建设优秀网广州网站制作实力乐云seo
  • 池州专业网站建设想做个网络推广
  • wordpress免谷歌青岛网络工程优化
  • 做网站用哪种编程语言如何写好一篇软文
  • 南昌做网站哪家公司好公司网站设计与制作
  • 做推广秒杀网站免费web服务器网站
  • 岳阳仲裁委员会网站建设新增sem优化技巧
  • 怎样做网站发布信息外贸营销网站建设
  • 宜昌网站优化深圳seo优化培训