各位对STL的strict weak order没有彻底利用。
楼主既然保证range都是独立的没有覆盖,那写个最简单的如下。
struct Range
{
int32_t lower_bound; // inclusive
int32_t upper_bound; // exclusive, and requires lower_bound <= upper_bound
bool operator < (const Range &other) const
{
this->upper_bound <= other.lower_bound;
}
};
bool isNumberInRange(int32_t number, const std::set<Range> &rgs)
{
const Range search{number, number + 1};
const auto r = rgs.equal_range(serach);
return r.first != r.second;
}
如果你的ranges是固定的,也可以放到vector中sort后用std::equal_range()查找。
--
修改:allegro FROM 73.162.73.*
FROM 73.162.73.*