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

来源:互联网 发布:js modal hide 编辑:程序博客网 时间:2024/06/05 10:06

通常使用需要快速查找定位的数据时,会通过 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):

原创粉丝点击