[C++] upper_bound和lower_bound
2015-10-13 23:04
369 查看
upper_bound 源码
template <class ForwardIterator, class T> ForwardIterator upper_bound (ForwardIterator first, ForwardIterator last, const T& val) { ForwardIterator it; iterator_traits<ForwardIterator>::difference_type count, step; count = std::distance(first,last); while (count>0) { it = first; step=count/2; std::advance (it,step); if (!(val<*it)) // or: if (!comp(val,*it)), for version (2) { first=++it; count-=step+1; } else count=step; } return first; }
lower_bound 源码
template <class ForwardIterator, class T> ForwardIterator lower_bound (ForwardIterator first, ForwardIterator last, const T& val) { ForwardIterator it; iterator_traits<ForwardIterator>::difference_type count, step; count = distance(first,last); while (count>0) { it = first; step=count/2; advance (it,step); if (*it<val) { // or: if (comp(*it,val)), for version (2) first=++it; count-=step+1; } else count=step; } return first; }
若val在原数组中存在,则upper_bound返回最后一个val的位置,lower_bound返回第一个val的位置
若val在原数组中不存在,则upper_bound和lower_bound返回的都是val因放在哪个位置而不影响原序列
相关文章推荐
- c语言尾递归示例
- C++注意事项-----------删除,添加等操作可能会使当前迭代器失效
- ULBP(uniform LBP) c++代码
- POCO C++框架:Application
- C++中,将class转换成函数指针(运用运算符重载实现,即operator函数)
- Item 39:明智地使用private继承 Effective C++笔记
- 项目37.2 单位转换对照表
- 逃出迷宫完整算法C++
- C++中String类的实现
- sizeof和C++类的问题
- 【LeetCode从零单刷】Rotate Image
- More Effective C++ 条款33 将非尾端(non-leaf classes)设计为抽象类(abstract classes)
- poco c++框架:定时器
- c++ primer 笔记
- C++/Java__中类模板中的静态成员变量和静态成员函数
- c++类static成员
- BZOJ水题
- 【LeetCode从零单刷】Spiral Matrix II
- cin、cin.get()、cin.getline()、getline()
- 小小君的C语言第四课