基于之前实现的区间树IP/PORT组。
新的需求是基于权重进行组内节点的随机选择。
原理很简单,无非是将权重值作为关键字进行区间树的组织。
即,对于需要插入到iv_tree { T }的权重为W的节点N。
在实际插入时,插入的是N: [ W + MAX(T) - 1, W + MAX(T) ]
查看时,可以很容易的得知节点N的权重为high(N) - low(N) + 1
在进行随机选择时,既可以 rand % MAX(T)来检索到相应的节点N。
需要注意的是,在删除其中节点X时,需要将所有大于X的节点进行差值修正,以避免[ 0, MAX(T) ]之间出现“空洞”。
已实现。
值得一提的是,由于权重的树与原始的IP/PORT树在同一组中,现在的代码看起来更晕了~~哈哈哈
阅读(1666) | 评论(0) | 转发(0) |