好的,这是我的问题:
我正在上一个类(我们叫MyClass
),它带有几个变量(其中一个是score
)
我也有一个MyClass
个对象的向量(例如vector<MyClass> MyObjects;
)
现在,考虑到我尝试对数组(使用sort(MyObjects.begin(),MyObjects.end(),MyClassCompare());
进行排序)并注意到性能显着下降(并且最终可能根本不需要向量的某些元素),我正在尝试:
选择(当前)最大元素(具有最大score
值的元素)
从向量中删除
选择下一个最大元素
等等...
有什么方法可以在C ++中使用内置函数/库来实现?
有任何想法吗?
提示:速度和性能至关重要。
最佳答案
如果您需要访问集合中价值最高的元素,则必须在(a)插入时或(b)搜索时引起性能下降。您已经注意到(b)昂贵,可能是由于您选择的方法所致,并且您正在询问如何更快地做到这一点。
开箱即用的priority_queue
可能恰好提供了您要查找的内容。我可以想象性能会比您当前的代码更好。