在Smalltalk中,您可以创建sortedCollection,也就是说您可以添加一个元素并将其插入正确的位置。
C++中有没有类似的东西?甚至更好的是还有诸如sortedQueue之类的东西,这样当您添加一个元素时,它将把它排序到一个类似于结构的队列中,您可以将第一个元素弹出?
我研究了set,这是我需要的排序方式,但这是一个无序的集合。我正在寻找尽可能小的运行时间。
最佳答案
您似乎在寻找 std::priority_queue
,它位于<queue>
头文件中。使用push()
,您可以将元素插入优先级队列。使用top()
,您将获得队列中当前最大的元素(或最小的元素,具体取决于实现operator<
的方式);并使用pop()
,您将删除最大/最小元素。
据我所知,它是用堆实现的,这使每个插入和弹出操作的时间复杂度为O(lg n)。在O(1)中只需查看顶部元素即可。
关于c++ - C++中是否有任何Sorted Collections?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6498098/