什么是在C++中跟踪设置间隔的最佳实现方式?我希望利用现有的STL或Boost库,但除了使用标准容器外,我不得不手动实现算法,这让我惊讶地发现很难做到正确,而且由于工作期限,我不得不简化它,以牺牲一些性能。肯定有更好的方法。
例如,我需要以下类型的行为:
例如,我需要以下类型的行为:
class SubRange
{
public:
SubRange(const T& lower_bound, const T& upper_bound);
...
};
Subrange r1(1,3);
Subrange r2(5,6);
Subrange r3(6,9);
Subrange tot = r1+r2+r3;
cout << tot; //displays (1,3) (5,9)
Subrange gaps = SubRange(1,9) - tot;
cout << gaps; // displays (4,4)
子范围由下限和上限组成,表示从下限到上限的一段连续元素集合,其中包含两个边界。该集合从下限开始构建,并逐步增加(operator++),直到达到上限。
我查看了处理区间算术的Boost Interval,似乎无法解决我的问题,但是文档对我来说不容易理解。如果有人认为它会有所帮助,那么请告诉我如何实现上面的示例。
对于好奇者。我的用例是代理服务器中的缓存算法,需要跟踪客户端请求的时间间隔,并仅优化地向服务器请求尚未缓存的时间间隔部分。如果客户端A请求从2016年1月1日到2016年1月3日的数据,客户端B请求从2016年1月5日到2016年1月6日的数据,客户端C请求从2016年1月6日到2016年1月9日的数据,则如果客户端D请求从2016年1月1日到2016年1月9日的数据,则代理应仅请求2016年1月4日的数据,因为其余日期已经被缓存。