C++ 重载运算符<;在我的类中,STL max_元素未使用

C++ 重载运算符<;在我的类中,STL max_元素未使用,c++,C++,我有一个指向对象QActionDonald的指针向量,我试图找到包含最高期望值的对象。我重载了操作符end(),functionToCompaire())@DonaldHerman你可以,但你必须定义自己的函数,即functionToCompare,它基本上比较*元素1和*元素2(这是对象)与element1和element2相反,它们是指针。我不能取消对指针的引用,隐式调用重载运算符方法吗?

我有一个指向对象QActionDonald的指针向量,我试图找到包含最高期望值的对象。我重载了操作符<,并且我使用max_元素方法获得了一个迭代器的最大值,但是我总是收到不正确的结束值。
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
相反,它们是指针。我不能取消对指针的引用,隐式调用重载运算符方法吗?