我需要一个始终保存n
迄今为止插入的最大项目的数据结构(无特定顺序)。
所以,如果n
是 3,我们可以在下面的会话中插入一些数字并且容器的内容发生变化:
[] // now insert 1
[1] // now insert 0
[1,0] // now insert 4
[1,0,4] // now insert 3
[1,4,3] // now insert 0
[1,4,3] // now insert 3
[4,3,3]
你明白了。数据结构的名称是什么?实现这一点的最佳方法是什么?或者这是在某个图书馆?
我正在考虑使用一个容器,priority_queue
它的元素(委托)使用反向比较,因此pop
将删除最小的元素。因此该insert
函数首先检查要插入的新元素是否大于最小元素。如果是这样,我们将最小的元素扔掉并推出新元素。
(我有一个C++
实现,但问题与语言无关。)