关于实现multimap的范围查找的两种方式

今天重温了一下multimap,突然发现以前对于查找某个元素的所有的mapped_type元素的方式有点笨,可以改进一手,主要有两种方式:
1.使用lower_bound()和upper_bound()找到范围;
2.使用equal_range()范围。
示例代码如下:

#include <iostream>
#include <map>
#include <ctime>

using namespace std;

int main(int argc, char *argv[])
{
	srand(time(nullptr));
	
	multimap<int, int> mapInts;

	for (int i(0); i<1000; ++i)
	{
		mapInts.insert({rand() % 100, rand() %100000000});
	}

	//方法一:使用lower_bound()和upper_bound()的方式
	auto begin = mapInts.lower_bound(66);
	auto end   = mapInts.upper_bound(66);
	for (; begin!=end; ++begin)
	{
		cout << "<" << begin->first << "," << begin->second << ">" << endl;
	}

	//方法二:使用equal_range()的方式
	auto range = mapInts.equal_range(66);
	for (; range.first!=range.second; ++range)
	{
		cout << "<" << range.first->first << "," << range.first->second << ">" << endl;
	}
	
	return 0;
}

推荐使用equal_range的方式,因为返回的直接就是表示范围的pair,使用起来极其方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值