我正在尝试为2D游戏创建一个简单的GUI。有一个很长的水平滚动"房间",里面有很多"对象"。每个"对象"都是一个带有自定义绘画算法的矩形,可以创建或删除。
我需要弄清楚的是,使用我的滚动坐标,屏幕上有哪些对象。有很多对象,所以使用链表可能是无效的。另一方面,对象通常不移动。
我考虑使用一个具有快速区间查找算法的数据容器(一种树?)来处理这个问题。然而,我一个也找不到。你能给我一些小费吗?
听起来间隔树可能会有所帮助。
作为一种选择,如果对象的大小偏差很小或最大大小较小,可以考虑简单地使用排序数组(可以在其上使用二进制搜索)或二进制搜索树(BST),然后可以简单地按对象的最左边位置进行索引,在查询时,找到从最左边的位置开始减去最右边的最大大小的间隔。BST实现通常允许从任何给定节点按顺序遍历树,或者允许范围查询。