如何确定浮子应该放在哪个仓中?C++
How to determine what bin a float should be in? C++
我有一个浮动Float_t xbins[41]
数组,它定义了40个仓,即浮动范围。例如,如果y > xbins[7] && !(y > xbins[8])
,则y
在仓7中。
在没有40 if语句的情况下,如何确定给定浮点值应属于哪个bin?
请用C++回答,因为我不会说其他语言。
如果数组已排序,则执行二进制搜索以找到正确的bin。您需要std::sort
的组合(如果未排序),然后是类似std::lower_bound
的组合来定位。您需要确保operator<
对于Float_t
得到了正确的实现。
事实证明,bin不是均匀间隔的,而是有整数边界的,最快的方法可能是使用一个(反向)查找表,该表显然有大约100个条目。对于较低的&更高的界限。
如果数组边界是用公式推导的,那么可以编写一个优于LUT方法的反公式。
对于一般情况,二进制搜索是一种方法——即使这样,也可以通过线性插值而不是将范围精确细分为一半来改进。与二进制搜索的O(logn)相比,速度(如果数据不是病态的)将是O(loglogn)。
相关文章:
- 如何确定我已使用非编码文件到达 EOF?
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 如何在C++中确定文本文件中的元素是字符还是数字
- Python中的for循环与C++有何不同
- 在clang++预处理器中确定gcc工具链版本
- 不确定要在我的main中放入什么才能使我的代码正常工作
- C++setiosflags函数操纵器-未确定的缩进
- 编译器如何在使用SFINAE的函数和标准函数之间确定两者是否可行
- 如何使用url确定网站协议
- 通过构造函数动态确定类实现
- 遍历并行数组以确定C++中的最大数字
- C++如果必须在编译时确定大小,std::array 有什么意义?
- 使用不变量来确定二分搜索中的边界条件
- 无论如何,我可以确定构造函数是否存在吗?
- compare_exchange C++函数如何确定竞争条件?
- 如何使用 do while 循环确定最高值和最低值
- 如何确定哪个标头调用 c++ 中的另一个标头
- 在C++中释放内存期间,迭代器与指针有何不同
- C++ Chrono 确定一天是否是周末?
- 什么是C++中的不确定行为?它与未定义的行为有何不同