STL算法中upper_bound()

Upper_bound()在前闭后开区间查找的关键字的上界,返回大于val的第一个元素位置。

首先介绍的是第一种用法:查找比某个元素大的第一个的值。

代码如下:

    vector<int> a = { 0,2,1,5,8,7,4,9,6 };

    vector<int>::iterator ite;

    for_each(a.begin(), a.end(), [](int a) {cout << a << " "; });

    cout << endl;

    sort(a.begin(), a.end());

    for_each(a.begin(), a.end(), [](int a) {cout << a << " "; });

    cout << endl;

    ite = upper_bound(a.begin(), a.end(), 2);    //返回数组中第一个大于被查数的值

    if (ite != a.end())//返回值找到返回该数字地址,没找到返回end

    {

       cout << *ite << " " << ite - a.begin() << endl;

}

效果图:

说明:排序之后,获取第一个值比2大的数,和它的索引值。

 

 

第二种用法,用到我们的反函数

代码如下:

    vector<int> a = { 0,2,1,5,8,7,4,9,6 };

    vector<int>::iterator ite;

    for_each(a.begin(), a.end(), [](int a) {cout << a << " "; });

    cout << endl;

    sort(a.begin(), a.end());

    for_each(a.begin(), a.end(), [](int a) {cout << a << " "; });

    cout << endl;

    ite = upper_bound(a.begin(), a.end(), 2);    //返回数组中第一个大于被查数的值

    if (ite != a.end())//返回值找到返回该数字地址,没找到返回end

    {

       cout << *ite << " " << ite - a.begin() << endl;

    }

    sort(a.begin(), a.end(),greater<int>());

    for_each(a.begin(), a.end(), [](int a) {cout << a << " "; });

    cout << endl;

    ite = upper_bound(a.begin(), a.end(), 2,greater<int>());

    if (ite != a.end())

    {

       cout << *ite << " " << ite - a.begin() << endl;

    }

 

说明:排序之后,获取第一个值比2小的数,和它的索引值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值