【发布时间】:2010-04-01 14:36:03
【问题描述】:
我需要某种优先级队列来存储对 <key, value>。值是唯一的,但键不是。我将执行以下操作(最常见的首先):
- 随机插入;
- 检索(并删除)所有具有最少键的元素。
- 随机删除(按值);
我不能使用std::priority_queue,因为它只支持去除头部。
目前,我使用的是未排序的std::list。 插入是通过将新元素推到后面来执行的 (O(1))。 操作 2 在执行实际检索之前使用 list::sort (O(N*logN)) 对列表进行排序。 移除不过是O(n),有点贵。
有更好的数据结构的想法吗?
【问题讨论】:
-
一个
vector而不是一个list,除非你真的有很多元素。 -
您希望保证
value的唯一性还是有其他需要注意的地方? -
不需要保证
value的唯一性。 ps.:我看到你是法国人,因为“?”之前的空格。 :-)
标签: c++ priority-queue data-structures