好的,这是我的问题:


我正在上一个类(我们叫MyClass),它带有几个变量(其中一个是score
我也有一个MyClass个对象的向量(例如vector<MyClass> MyObjects;


现在,考虑到我尝试对数组(使用sort(MyObjects.begin(),MyObjects.end(),MyClassCompare());进行排序)并注意到性能显着下降(并且最终可能根本不需要向量的某些元素),我正在尝试:


选择(当前)最大元素(具有最大score值的元素)
从向量中删除
选择下一个最大元素
等等...


有什么方法可以在C ++中使用内置函数/库来实现?
有任何想法吗?



提示:速度和性能至关重要。

最佳答案

如果您需要访问集合中价值最高的元素,则必须在(a)插入时或(b)搜索时引起性能下降。您已经注意到(b)昂贵,可能是由于您选择的方法所致,并且您正在询问如何更快地做到这一点。

开箱即用的priority_queue可能恰好提供了您要查找的内容。我可以想象性能会比您当前的代码更好。

07-26 09:29
查看更多