equal_range()、lower_bound() 和 upper_bound()返回值

        equal_range()、lower_bound()和upper_bound()三个算法提供了二分查找的形式它们指出了一个值应该被插入在容器中的哪个位置同时保留容器的排列顺序

1、equal_range()

equal_range()返回一对iterator 第一个iterator 表示由lower_bound()返回的iterator 值,第二个表示由upper_bound()返回的iterator 值。

2、lower_bound()

函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置。

3、upper_bound()

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

举个例子

void test_vector()
{
	vector<int> vd;
	for (int i = 1; i <5; i++)
		vd.push_back(i);

	vd.push_back(3);

	sort(vd.begin(), vd.end());
	int pos = lower_bound(vd.begin(), vd.end(), 3) - vd.begin();
	cout<<"pos:"<<pos<<endl;
	pos = upper_bound(vd.begin(), vd.end(), 3) - vd.begin();
	cout<<"pos:"<<pos<<endl;

	typedef vector<int>::iterator vc_itor;
	pair<vc_itor, vc_itor> itor_p;

	itor_p = equal_range(vd.begin(), vd.end(), 3);
	cout<<"firse pos :"<<(itor_p.first - vd.begin())<<" secode pos :"<<(itor_p.second - vd.begin())<<endl;
}
执行结果
pos:2
pos:4
firse pos :2 secode pos :4

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值