【发布时间】:2024-12-16 14:40:02
【问题描述】:
我正在开发一个自定义窗口系统,它同时显示重叠的多个窗口。
关于一个窗口的重要数据包括它的坐标(x-y坐标系中对角的两个对角)、索引(索引值最低的一个显示在所有其他窗口之上)和它的内容。
操作包括
- 点击(命中测试)
- 记录使用过的窗口的历史记录 最近
- 调整大小
- 拖动
- 最小化窗口(将索引更新为无穷大/最大值)
- 最大化窗口(将所有其他窗口索引值增加 1)
我发现Min-heap 可用于跟踪以键为索引的窗口。树的节点可以包含其他信息,例如 x-y 坐标和指向其内容的指针。
历史记录可以通过Doubly Linked Lists完成。
问题:
还有哪种数据结构适合这个问题?
- 有没有什么数据结构可以单独解决这个问题?
- 如果排除最小化/最大化操作,是否有任何数据结构可以有效适应?
- 有谁知道如何在 Windows Family、Linux 等操作系统中跟踪窗口?
【问题讨论】:
-
如何选择其他窗口?是否有最小化操作或者您只是选择下一个窗口?在那种情况下,当前的顶部窗口会去哪里?
-
我认为显而易见的解决方案没有任何问题——拥有一组窗口、一组用于排序的引用和一组用于历史的标识符。
标签: data-structures