STL_Algorithm: lower_bound, upper_bound, equal_range

原创 2011年01月09日 21:29:00

#include<iostream>

#include<iterator>

#include<algorithm>

#include<vector>

 

using std::cout;

using std::endl;

 

int main()

{

    const int SIZE = 10;

    int a1[] = { 2, 2, 4, 4, 4, 6, 6, 6, 6 };

    std::vector<int> v( a1, a1 + SIZE );

    std::ostream_iterator<int> outputIt( cout, " " );

 

    cout<<"Vector v contains:/n";

    std::copy( v.begin(), v.end(), outputIt );

 

    std::vector< int >::iterator lower;

    lower = std::lower_bound( v.begin(), v.end(), 6 );

 

    cout<<"/n/nLower bound of 6 is element "

        << (lower - v.begin() ) << " of vector v";

 

    std::vector< int >::iterator upper;

    upper = std::upper_bound( v.begin(), v.end(), 6 );

 

    cout<<"/nUpper bound of 6 is element "

        <<( upper - v.begin() ) <<" of vector v";

 

    std::pair< std::vector<int>::iterator,

        std::vector<int>::iterator> eq;

    eq = std::equal_range( v.begin(), v.end(), 6 );

 

    cout<<"/nUsing equal_rang:/n"

        <<"   Lower bound of 6 is element "

        <<( eq.first - v.begin() ) <<" of vector v";

    cout<<"/n   Upper bound of 6 is element "

        <<( eq.second - v.begin() )<<" of vector v";

 

    cout<<"/n/nUse lower_bound to locate the first point/n"

        <<"at which 5 can be inserted in order";

 

    lower = std::lower_bound( v.begin(), v.end(), 5 );

 

    cout<<"/n   Lower bound of 5 is element "

        << (lower - v.begin() ) <<" of vector v";

 

    cout<<"/n/nUse upper_bound to locate the last point/n"

        <<"at which 7 can be inserted in order";

 

    upper = std::upper_bound( v.begin(), v.end(), 7 );

 

    cout<<"/n   Upper bound of 7 is element "

        <<( upper - v.begin() )<<" of vector v";

 

    cout<<"/n/nUse equal_range to locate the first and/n"

        <<"last point at which 5 can be inserted in order";

 

    eq = std::equal_range( v.begin(), v.end(), 5 );

 

    cout<<"/n   Lower bound of 5 is element "

        <<( eq.first - v.begin() )<<" of vector v";

 

    cout<<"/n   Upper bound of 5 is element "

        <<( eq.second - v.begin() )<<" of vector v"

        <<endl;

 

    return 0;

}

使用std::lower_bound和std::upper_bound解决常见的二分查找问题

我总结的常见二分查找的写法有如下几种: 1,有序数组查找特定的某个值。 2,有序数组查找小于某个值的数字中最大的那个。 3,有序数组查找小于等于某个值的数字中的最大的那个。 4,有序数组查找大于某个值...
  • anakin7
  • anakin7
  • 2017年05月01日 14:24
  • 226

STL里边二分的lower_bound函数与upper_bound函数的最常见的用法

在这些之前都有的前提,那就是真个数组是一个非降序列!!!!!! lower_bound()函数怎么使用呢?我想这就是很多读者会遇到的问题,下边就有小编我来帮大家解释一下吧,自豪的说几句。 说起来我用一...
  • wangjianbing1998
  • wangjianbing1998
  • 2016年08月01日 21:06
  • 1743

C++中lower_bound函数和upper_bound函数 以及 sort(参数)

STL中关于二分查找的函数有三个lower_bound 、upper_bound 、binary_search 。这三个函数都运用于有序区间(当然这也是运用二分查找的前提),下面记录一下这两个函数...
  • sr19930829
  • sr19930829
  • 2014年07月24日 09:59
  • 2171

C++中lower_bound函数和upper_bound函数 以及 sort(参数)

转自:http://blog.csdn.net/sr_19930829/article/details/38079377 STL中关于二分查找的函数有三个lower_bound ...
  • u010009320
  • u010009320
  • 2016年04月20日 20:26
  • 726

STL插入排序std::upper_bound和std::lower_bound的使用,以及通用排序类

转载地址:http://blog.chinaunix.net/uid-22145625-id-3864291.html 1. 使用vector进行排序插入     如果我们有个vector容...
  • u012398613
  • u012398613
  • 2016年07月08日 17:03
  • 571

二分法中的两个函数-【lower_bound】【upper_bound】

/* lower_bound(begin(),end()+1,k); upper_bound(begin(),end()+1,k); */ #include #include using namesp...
  • jadeyansir
  • jadeyansir
  • 2017年07月27日 20:51
  • 63

有关lower_bound()函数的使用

lower_bound()函数需要加载头文件#include,其基本用途是查找有序区间中第一个大于或等于某给定值的元素的位置,其中排序规则可以通过二元关系来表示。   函数原型:templ...
  • jzwong
  • jzwong
  • 2015年04月13日 18:50
  • 1145

两个很实用很方便的函数核心及用法{(lower_bound)+(max_element))~~

(1)            关于 lower_bound(a,a+n,x)-a的用法:                                                求x在数组a中的...
  • NYIST_TC_LYQ
  • NYIST_TC_LYQ
  • 2016年03月24日 17:33
  • 664

STL中的multimap---顺便说说如何查找同一关键字对应的所有值(利用count, lower_bound/upper_bound, equal_range)

我个人感觉哈, map的应用场景比multimap更多, 不过, 我们还是来学一下multimap。 我们知道, multimap中, 一个关键字可能对应多个不同的值, 怎么获取呢?我们来看程序, 接...
  • stpeace
  • stpeace
  • 2015年04月10日 20:57
  • 3060

C++算法库学习__std::sort__对 vector进行排序_排序后就可以进行使用std::lower_bound进行二分查找(查找第一个大于等于指定值的迭代器的位置)__std::unique

std::sort      对vector成员进行排序; std::sort(v.begin(),v.end(),compare); std::lower_bound 在排序的v...
  • zb872676223
  • zb872676223
  • 2014年05月06日 16:47
  • 7465
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:STL_Algorithm: lower_bound, upper_bound, equal_range
举报原因:
原因补充:

(最多只允许输入30个字)