c++ - 从 vector 中获取(下一个)最大对象

标签 c++ performance sorting vector max

好的,这是我的问题:

  • 我有一个类(我们称之为 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/

相关文章:

c++ - 难以理解 C++ 程序、shift 和 &

c++ - 对 boost 构建参数感到困惑

python - pandas:根据具有重复值的另一列填充 nan 值

Python 代码比相同的 C++ 代码慢得多?

c++ - 取消引用 std::find_if 的结果时内存访问错误

c++ - 工作 "within"结构 C/C++

java - 具有速度控制(恒定音高)的javafx中的视频播放器

algorithm - 遗传规划和搜索算法

c++ - C++结构数组的新顺序

c - 如何从 C 中的 char 函数返回字符串