我有一个连续生成随机解(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> >
来存储基于solution
和score
本身的10个最佳score
。 std::priority_queue
是一个堆,因此您可以根据可以设置为比较compare
的score_a < score_b
函数提取其最大值。 score(new) > score(10th)
,则将insert(new)
放入priority_queue
p
和p.pop_back()
中,以摆脱旧的第10个元素。 vector<T> solution
为止。 关于c++ - C++存储和更新排序项目的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63552767/