gpt4 book ai didi

c++ - 通过元素的功能搜索 upper_bound

转载 作者:行者123 更新时间:2023-11-30 04:49:53 29 4
gpt4 key购买 nike

假设 a 有一个可以计算为整数的类 A

我们将 A 的 vector 作为输入,该 vector 按其 evaluate() 值排序。

如何找到评估值的上限?

我试过了,但它没有编译。

class A;
int evaluate(const A& a);
// ...
vector<A>::iterator foo(vector<A>& v, int k)
{
return upper_bound(v.begin(), v.end(), k,
[](const A& a, int k)
{
return evaluate(a) < k;
}
);
}

最佳答案

虽然其他用户已经正确指出了问题(例如@StoryTeller 说的“你把 lambda 中的参数顺序弄错了”),但请允许我放下一段在我的机器上编译的代码,对于其他观众引用。

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

class A
{
public:
int data;
A(int data) : data(data) {}
};

int evaluate(const A & a)
{
return a.data;
}

std::vector<A>::iterator foo(std::vector<A> & v, int k)
{
return std::upper_bound(v.begin(), v.end(), k,
[](int k, A & a) { return evaluate(a) > k; }); // first argument always val
}

int main()
{
std::vector<A> vec {36, 42, 57};
std::cout << foo(vec, 42) - vec.begin() << std::endl; // 2
}

关于c++ - 通过元素的功能搜索 upper_bound,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55206396/

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