存储内部排序映射元素的最快方式
Fastest way to store internally sorted map elements
是否存在允许O(n)次有序删除和遍历的有序容器?我正在尝试做以下事情:
Hello -> 1,2,3,4,5,6
Hello1 -> 24,15,13,10,8,7
我需要能够插入和删除连续从Hello或Hello1尽快。我在考虑使用优先级队列,但是每次我想要删除时,我都要花费O(nlogn)时间来调整,所以n次删除将花费O(nlogn)时间来保持内部结构的有序。是否存在可以在O(n)时间内完成此任务的数据结构?
只使用std::vector
,在顶部固定一些排序;不要每次都使用std::sort
,使用归并排序。
vector
就可以了。
仔细考虑是否需要保持结构总是有序的;你能在诉诸之前插入一些项目吗?如果是两个向量并在查找中归并呢?仔细考虑你的算法;例如,您可以删除O(n)
中的任意数量的项。
相关文章:
- 从嵌套在std::映射中的std::列表中删除元素的最佳方式
- 如果第一个元素包含任何零,则我的程序以不希望的方式运行
- C++通过别名指针以静默方式将错误的类型分配给数组元素
- 对列表列表中的元素进行分组的最佳方式
- 是否有任何优雅的方式来遍历元素位置可以更改的列表?
- 使用现代C++在 Eigen3 矩阵上使用 for 循环进行元素操作的优雅方式
- 如何以简洁的方式安全地访问容器中的每个第 n 个元素?
- 以C++递归方式对链表中的元素求和
- 以编程方式推断出枚举的大小,独立于其元素的价值
- 以重复的方式将元素添加到 std::vector
- 干燥的方式来构建具有相同初始化器列表的数组的所有元素
- 如何以正确的方式找到向量中的元素-C
- 传递数组的一种病理方式:参考第一个元素
- 在哪种方式搜索容器中的元素的方式更有效
- 以最新的C 的类型安全方式从枚举中随机选择元素
- 以线性最小二乘方式求解系统 Ax=b,具有复元素和下三角形平方 A 矩阵
- 找到组合对之间共享元素的最佳方式
- memmove会移动元素(就像前面的方式相同),还是一次抓住整个内存块
- 一种方式链接列表和不需要的第一个元素AFRTER填充
- 访问数组元素的不同方式