中是否有任何Sorted

中是否有任何Sorted

在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/

10-09 03:40