gpt4 book ai didi

c++ - 上界/下界的比较函数

转载 作者:IT老高 更新时间:2023-10-28 21:42:01 27 4
gpt4 key购买 nike

我想在排序后的 vector 中找到第一个字段小于某个值 x 的项目。
我需要提供一个比较函数,将“x”与 MyClass 中的内部值进行比较,但我无法计算出函数声明。
我不能简单地重载 '<' 但是当 args 是 '&MyClass' 和 'float' 时我该怎么做?

 float x;
std::vector< MyClass >::iterator last = std::upper_bound(myClass.begin(),myClass.end(),x);

最佳答案

您将什么函数传递给排序算法?您应该可以对 upper_bound 和 lower_bound 使用相同的。

进行比较的最简单方法是创建一个虚拟对象,并将关键字段设置为您的搜索值。那么比较总是在相似的对象之间进行。

编辑:如果由于某种原因您无法获得具有正确比较值的虚拟对象,那么您可以创建一个比较仿函数。仿函数可以为 operator() 提供三个重载:

struct MyClassLessThan
{
bool operator() (const MyClass & left, const MyClass & right)
{
return left.key < right.key;
}
bool operator() (const MyClass & left, float right)
{
return left.key < right;
}
bool operator() (float left, const MyClass & right)
{
return left < right.key;
}
};

如您所见,这是很长的路要走。

关于c++ - 上界/下界的比较函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/869593/

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