我正在实现一个显示算法,我们可以根据它们的 z 顺序拥有多层窗口,即我从最后一个 z 值开始并合并图像,直到我们得到 z 值为 0 的图像顶部。 要维护 z 值,您推荐哪种数据结构?
例如:如果 z 顺序是 2 3 4 5 1 6 7 8 9 10(应用程序的索引)并且如果用户单击了应用程序 5 的窗口,那么我们需要将 5 移到前面,然后将剩余顺序应相同,即 5 2 3 4 1 6 7 8 9 10。
如果我使用 vector ,那么每次都重新排列元素(或复制值)似乎效率不高。 如果我使用双端队列,那么 push_front 有一些明显的优势,但是再次从它以前的位置删除应用程序是问题所在。 如果我使用列表,那么每次我们需要搜索元素并将其删除时。 关于哪种数据结构对我的目的最有效,有什么想法吗?
最佳答案
考虑到窗口的数量可能会最少,我可能会使用(智能)指针 vector ,并对 vector 分量重新排序。虽然复杂性高于其他替代方案,但实际性能不会差,因为常量可能主导复杂性。
关于c++ - 关于STL数据结构的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6662626/