我正在寻找一个将浮点数分类为任意bin的类。垃圾箱。所需的语法如下:
std::vector<double> bin_vector;
// ..... fill the vector with 1, 1.4, 5, etc not evenly spaced values
Binner bins(bin_vector);
for (std::vector<double>::const_iterator d_itr = some_vector.begin();
d_itr != some_vector.end(); d_itr++) {
int bin = bins.categorize(*d_itr);
// bin would be 0 for x < 1, 1 for 1 < x < 1.4, etc
// do something with bin
}
不幸的是,由于可移植性要求,我仅限于boost和STL。我已经使用映射和针对自定义范围对象重载
<
推出了自己的O(log n)解决方案,但是该解决方案似乎极易出现错误和丑陋。是否有一些简单的STL或boost对象解决方案?
最佳答案
使用std::map,将区间边界映射到bin编号。然后使用.upper_bound()查找垃圾箱。
关于c++ - 将 double 分类为任意垃圾箱,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10310990/