【问题标题】:A collection of ranges范围的集合
【发布时间】:2009-01-22 01:16:49
【问题描述】:

想象一个场景,用户可以使用 xml 以灵活的方式指定范围,使用“gte”、“gt”、“lte”、“lt”或“eq”的任意组合。

这里有一些例子

<rangeElement gte="0" lt="5" ... />
<rangeElement gt="3" lte="7" ... />
<rangeElement eq="5" ... />
<rangeElement gt="10.5" ... />

现在我需要两个类,Range 和 RangeCollection,它们可以处理这些问题。

Range 类可能如下所示:

public class Range
{
   public LowerBoundInclusive { get; set; }
   public LowerBoundExclusive { get; set; }
   public UpperBoundInclusive { get; set; }
   public UpperBoundExclusive { get; set; }
   public object Data { get; set; }

   public Range(XElement xmlElement)
   {
      ....
   }
}

RangeCollection 类应该有一些对其范围进行排序、检测重叠并返回给定值的相应范围的基本方法。

我玩过这个,但事情很快就变得异常复杂。有没有其他人看到过这个的实现,或者想试一试?

顺便说一句。我知道有类似的线程可以处理范围,但它们没有充分处理“小于或等于”和“小于”之间的区别。

【问题讨论】:

  • 您的示例未显示。请审核?
  • 你的示例应该给出什么价值 xx>=0 && xx
  • 显示一些 api 的客户端代码你的想法,这可能有助于我理解你的意图。

标签: c# range collections


【解决方案1】:

您需要的是interval tree。不难找到implementation in C# 并对其进行修改以使其适合您的需求。我认为“

【讨论】:

  • 是的,这看起来确实像我需要的。 C5 库有一个叫做“IntervalHeap”的东西......我想知道这是不是一样的东西。
猜你喜欢
  • 2020-09-29
  • 2017-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多