扩展的find算法 -- find_nearest(查询最接近的数据)

通常使用需要快速查找定位的数据时,会通过 set/map 等保存数据,然后使用find等算法进行查找。

但有时想查找的数据不能完全匹配,而是查找一个最接近的值(比如,在两个不同的数据结构中,想匹配出ID相同,且发生时间最接近的数据)时,STL没有提供可用的函数,一般的做法就是将数据全部遍历计算一遍,然后选取最接近的值。其算法复杂度为 O(n)。

通过扩展,写出通用的模版算法 find_nearest 可以完成这个功能,适用于 set/map。

 

PS:原本想找现成的,可惜没有找到,只有自己写一个。感觉这个人的目的和我的比较接近:http://topic.csdn.net/u/20071112/10/226d912b-05b5-4e2f-8f8e-0a93ec76eeca.html

 

废话不多说了,直接上代码和UT。

 

代码:

 

 

UT(CppUnit):

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值