stl 二分容器小总结

本文总结了STL中的二分查找容器,包括upper_bound和lower_bound,它们分别返回大于和大于等于指定数的位置,适用于非递减数组。此外还介绍了binary_search,用于检查数组中是否存在指定数。在非递增数组中使用这些容器时,可以通过重载或使用greater()进行调整。
摘要由CSDN通过智能技术生成

stl大法好

stl二分常用的有三个容器。
分别介绍一下:
upper_lound(数组首地址,数组尾地址,查找的数A);
lower_lound(数组首地址,数组尾地址,查找的数A);

这两个容器返回值都是地址。

upper_lound的返回值是数组里面第一个大于A的那个位置的地址。
lower_lound的返回值是数组里面第一个大于等于A的那个位置的地址。
注:
返回值都是地址。如果想要那个位置的下标。则可以将返回的地址减去数组首地址即可以得到。并且这两个容器的用途都是用于非递减的数组中。

还有一个查找数A在数组中是否出现过的容器。
binary_search(数组首地址,数组尾地址,查找的数A);
如果要查找的数A在数组中,则这个容器返回1;
如果要查找的数不在数组中,则这个容器返回0;

上面介绍的都是在数组是非递减的情况下。
那么如果我们是要在非递增数组中使用呢?
1,重载。
2,容器其实默认的是有4个参数的,省掉第四个参数(即默认为非递减序列)
如果将第四个参数加上,则这些容器可在非递增序列使用(同时大于变小于,大于等于变小于等于)。
格式:
upper_lound(数组首地址,数组尾地址,查找的数A,greater () );
具体代码:

#include"string.h"
#include"functional"
#include
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值