好的,这是我的问题:
- 我有一个类(我们称之为
MyClass
),有几个变量(其中一个是score
) - 我还有一个 vector
MyClass
对象(例如vector<MyClass> MyObjects;
)
现在,鉴于我尝试对数组进行排序(使用 sort(MyObjects.begin(),MyObjects.end(),MyClassCompare());
)并注意到性能显着下降(并且最终可能根本不需要 vector 的某些元素),我是试图:
- 选择(当前)最大元素(具有最大
score
值的元素) - 从 vector 中删除它
- 选择下一个最大元素
- 等等...
有什么方法可以在 C++ 中使用内置函数/库来实现吗? 有什么想法吗?
提示:速度和性能至关重要。
最佳答案
如果您需要访问集合中的最大值元素,您将不得不在 (a) 插入时提前或 (b) 搜索时招致一些性能损失。您已经注意到 (b) 很昂贵,可能是由于您选择的方法,并且正在询问如何才能更快地完成此操作。
开箱即用 priority_queue
它可能提供了您正在寻找的东西。我想性能会比您当前的代码更好。
关于c++ - 从 vector 中获取(下一个)最大对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14608122/