gpt4 book ai didi

c++ - 选择最大的 “n” 值

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:24:58 25 4
gpt4 key购买 nike

如果我有以下内容:

#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>

struct Features{ int F1, F2, F3, F4; };

int criterionFunction(Features const& features) {
return
-2*features.F1*features.F2
+3*features.F1
+5*features.F2
-2*features.F1*features.F2*features.F3
+7*features.F3
+4*features.F4
-2*features.F1*features.F2*features.F3*features.F4; }

我如何应用 transform() 找到前 三个 最大值

谢谢。

最佳答案

下面是一个使用 nth_element 的示例,它具有更简单的特征对象和标准函数(以减少困惑):

#include <algorithm>
#include <vector>
#include <iterator>
#include <iostream>

typedef int Features;

int criterionFunction(Features features) {
return features;
}

int main() {
std::vector<Features> v { 0, 4, 2, 5, 4, 3, -2, 1 };
std::nth_element(v.begin(), v.begin() + 3, v.end(),
[](Features a, Features b) {
return criterionFunction(a) > criterionFunction(b);
});
std::copy(v.begin(), v.begin() + 3,
std::ostream_iterator<Features>(std::cout, " "));
}

对于您的原始 Features 对象,缓存/内存 criterionFunction 的结果以防止重复调用可能很有用。

请注意,nth_element 不会对两个分区中的元素进行排序;如果您希望对前三个元素进行排序,请改用 partial_sort

关于c++ - 选择最大的 “n” 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11603786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com