好的,所以这是我的问题:
MyClass
),有几个变量(其中一个是score
)MyClass
个对象的向量(例如vector<MyClass> MyObjects;
)现在,鉴于我尝试对数组进行排序(使用sort(MyObjects.begin(),MyObjects.end(),MyClassCompare());
)并注意到性能大幅下降(并且最终可能根本不需要向量的某些元素),我想:
score
值的元素)有没有办法在C ++中使用内置函数/库来实现? 有什么想法吗?
提示:速度和性能至关重要。
答案 0 :(得分:1)
如果您需要访问集合的最大值元素,则必须在(a)插入时提前或(b)搜索时间内产生一些性能影响。您已经注意到(b)价格昂贵,可能是由于您选择的方法,并且询问如何更快地完成此操作。
开箱即用,您priority_queue
可能提供您正在寻找的内容。我认为性能会优于您当前的代码。
答案 1 :(得分:0)
如果您正在“收集”以后要按某种顺序(最大,最小等)选择内容的数据,您将有以下几种选择:
在您的情况下,您正在谈论从集合中删除一些数据。是否要求您实际删除数据,或者只是跟踪“不再需要”的内容?如果是后者,也许上面的选项4是一个不错的选择 - 你只需将它从排序表中删除即可。因为这比项目列表本身小得多[推测“MyClass”大于两个整数]。