存储内部排序映射元素的最快方式

Fastest way to store internally sorted map elements

本文关键字:方式 元素 内部 排序 映射 存储      更新时间:2023-10-16

是否存在允许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)中的任意数量的项。