c++ - C++存储和更新排序项目的有效方法

标签 c++

我有一个连续生成随机解(std::vector<float>)的操作。我根据数学函数评估解决方案,以查看其有效性( float )。我想一直存储十大解决方案。在C++中最有效的方法是什么?
我需要存储解决方案(std::vector)及其有用性( float )。我正在执行数十万次评估,因此我需要一个有效的解决方案。
编辑:
我知道排序方法。我正在寻找除排序和存储值以外的方法。寻找更好的数据结构(如果有)。

最佳答案

  • 您可以为当前float score()评估std::vector<T> solution函数,并将它们存储在std::pair<vector<T>, float>中。
  • 您可以使用std::priority_queue< pair<vector<T>, float> >来存储基于solutionscore本身的10个最佳scorestd::priority_queue是一个堆,因此您可以根据可以设置为比较comparescore_a < score_b函数提取其最大值。
  • 存储前10对,然后将每个新的对与堆顶部进行比较,如果score(new) > score(10th),则将insert(new)放入priority_queue pp.pop_back()中,以摆脱旧的第10个元素。
  • 您一直在循​​环内执行此操作,直到用完vector<T> solution为止。
  • 关于c++ - C++存储和更新排序项目的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63552767/

    相关文章:

    c++ - 声明一个指向 void* 二维数组的指针

    c++ - 如何在收到的包中获取有关 ICMP 的信息?

    c++ - 使用winapi计算按钮大小

    c++ - 我释放内存两次 - C++

    c++ - C++ 中的单元测试

    c++ - vector 结构

    C++:从dll访问嵌入式资源

    c++ - Qt - QTextStream - 如何将光标位置设置为一行的开头?

    C++:在 MFC 应用程序中使用 WM_ERASEBKGND 消息避免闪烁

    c++ - 对象指针数组的内存结构(可视化)