C++ 重载运算符<;在我的类中,STL max_元素未使用
我有一个指向对象QActionDonald的指针向量,我试图找到包含最高期望值的对象。我重载了操作符<,并且我使用max_元素方法获得了一个迭代器的最大值,但是我总是收到不正确的结束值。C++ 重载运算符<;在我的类中,STL max_元素未使用,c++,C++,我有一个指向对象QActionDonald的指针向量,我试图找到包含最高期望值的对象。我重载了操作符end(),functionToCompaire())@DonaldHerman你可以,但你必须定义自己的函数,即functionToCompare,它基本上比较*元素1和*元素2(这是对象)与element1和element2相反,它们是指针。我不能取消对指针的引用,隐式调用重载运算符方法吗?
QActionDonald.h:
class QActionDonald
{
public:
double expectedvalue_;
bool operator < (const QActionDonald& other) const;
};
class-qaction
{
公众:
双期望值;
布尔运算符<(常数和其他)常数;
};
QActionDonald.cpp:
bool QActionDonald::operator< (const QActionDonald& other) const
{
return expectedvalue_ < other.expectedvalue_;
}
bool-QActionDonald::运算符<(常量QActionDonald和其他)常量
{
返回expectedvalue \
其他类别:
std::vector<QActionDonald*> *actionList = qValueDictionary[stateKey];
std::vector<QActionDonald*>::iterator it =
std::max_element(actionList->begin(), actionList->end());
std::vector*actionList=qValueDictionary[stateKey];
std::vector::iterator它=
std::max_元素(actionList->begin(),actionList->end());
当然不是,因为您的容器有指针,而不是对象
要使用它,您需要std::vector
,或者,如果不需要更改,则需要为std::max_元素
提供一个自定义比较器,该比较器应用正确的逻辑(即比较对象,而不是指针)。好吧,您不是在比较QActionDonald
。你在把指针和它们比较,谢谢。那么,我怎样才能让它发挥作用呢?如果容器有指针,我不能使用STL max_元素?我基本上必须做std::max_元素(actionList->begin(),actionList->end(),functionToCompaire())@DonaldHerman你可以,但你必须定义自己的函数,即functionToCompare
,它基本上比较*元素1
和*元素2
(这是对象)与element1
和element2
相反,它们是指针。我不能取消对指针的引用,隐式调用重载运算符方法吗?