111*_*001 11 c++ intersection range set-intersection
在C++中找到两个范围的交集的最佳方法是什么?例如,如果我有一个范围为[1 ... 20],包括[13 ... 45],则我想得到[13 ... 20],因为这是它们之间的交集.
我想过在C++中使用本机集合交集函数,但我首先要将范围转换为集合,这对于大值需要花费太多的计算时间.
Rei*_*ica 30
intersection = { std::max(arg1.min, arg2.min), std::min(arg1.max, arg2.max) };
if (intersection.max < intersection.min) {
intersection.markAsEmpty();
}
Run Code Online (Sandbox Code Playgroud)
为了完整起见,我想添加一个"提升答案".
如果您已经在使用boost,则无需编写自己的代码,但可以使用仅限标头
#include <boost/numeric/interval.hpp>
Run Code Online (Sandbox Code Playgroud)
并使用intersect处理类型的函数interval<T>.
| 归档时间: |
|
| 查看次数: |
7521 次 |
| 最近记录: |