c++ - 关于STL数据结构的建议

标签 c++ algorithm stl

我正在实现一个显示算法,我们可以根据它们的 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/

相关文章:

c++ - 编程范式;想知道是否需要重写/重构

arrays - 两个数组中元素序列的相似程度如何

algorithm - 什么是 NP 和 NP 完全问题?

c++ - 什么样的C++模板编程可以调用 "meta programming"?

c++ - 具有模板模板参数的模板定义中的函数特化

c++ - Visual Studio 2017 : Speed up C++ IntelliSense

c++ - 从 vector 集中修剪非公共(public)元素

c++ - 重载 std::transform 算法

c++ - 查找与存储在 vector 中的对象对应的迭代器

c++ - 检查数组中的字符串是否为空时出错