栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++学习笔记 之 lower

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++学习笔记 之 lower

用于查找有序序列中目标值的上下界

使用时需要包含头文件 #include

内部实现是二分查找,时间复杂度为 O ( l o g n ) O(logn) O(logn)

  • lower_bound : 返回序列中第一个大于等于value的元素的位置,没有的话返回last位置(不是最后一个元素,此时返回值是越界的)
  lower_bound(start,end,value);
  //使用方式与upper_bound相同 

  • upper_bound : 返回序列中第一个大于value的元素的位置,及上界
upper_bound(start,end,value);

//数组, 返回值为索引值,int
int nums[10];
int k = 8, value = 7; //在前八个元素中查找7的上界
int key = upper_bound(nums,nums+k,value);


//vector
vector nums = { 1,2,3,4,4,4,5,6,7,7,20 };
auto iter1 = upper_bound(nums.begin(), nums.end(), 7);
cout << *iter1 << endl;  // 输出 20
auto iter2 = upper_bound(nums.begin(), nums.end(), 20);
//cout << *iter2 << endl;  // 返回的是last位置的迭代器,越界,取值会报错

//set
setst = { 1,2,3,4,4,4,5,6,7,7,20};
auto iter3 = upper_bound(st.begin(), st.end(), 7);
cout << *iter3 << endl;  // 输出 20
auto iter4 = upper_bound(st.begin(), st.end(), 20);
//cout << *iter4 << endl;  // 返回的是last位置的迭代器,越界,取值会报错

//map
// 使用方式同上
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/934400.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号