哪些数据结构可用于实现整数池?

| 这些整数可以是IP地址(DHCP)或会话ID或隧道ID(例如,在L2TP中)。 每个整数可以自由或使用。我们需要它能有效地找到免费的。 还有一个最小和最大定义。     
已邀请:
        好的,因为您有一个最大值和一个最小值,我有以下想法: 您可以动态维护此最大值或最小值,并具有可用整数列表。 首先,您从一个空列表和整个范围开始。 当某人租用一个整数时,如果列表为空(如果我们不从列表中取出),则范围的大小将减小一。 如果他释放整数,则有2种可能性: 它适合您的最大/最小范围的边缘,因此您可以增加范围大小 它距离范围很远,因此您将其放入列表中 这应该使您能够以低成本维持较高和较低的自由整数计数。 当然,您也可以尝试保存多个范围以将整数聚类在一起,但这将需要更复杂的操作。     
        我会保留一个免费清单和一个二手清单。分配数字意味着将其从空闲列表移动到已使用列表,反之则重新分配。 维护列表是有代价的,但是找到一个免费号码会很快     
        您是否期望有更多的自由或更多使用的整数? 您是否要同时保存IP,SessId和TunId,还是要分别保存? 对我来说,最平衡的将是一棵树,但是如您所知,如果没有频繁的更改,那么数组就足够了。 当您不关心某些顺序时,动态列表将是最佳选择。     

要回复问题请先登录注册