重载的运营商运营商<在我的类中没有被STL max_element使用

时间:2012-12-06 01:06:58

标签: c++

我有一个指向对象QActionDonald的指针向量,我试图找到包含最高期望值_的对象。我已经超载了运营商<我正在使用max_element方法获取最高值的迭代器,但我总是收到不正确的结束值。
QActionDonald.h:

class QActionDonald
{
public:

double expectedvalue_;

bool operator < (const QActionDonald& other) const;

}; 

QActionDonald.cpp:

bool QActionDonald::operator< (const QActionDonald& other) const
{
    return expectedvalue_ < other.expectedvalue_;
}

otherClass:

std::vector<QActionDonald*> *actionList =  qValueDictionary[stateKey];

        std::vector<QActionDonald*>::iterator it = 
std::max_element(actionList->begin(), actionList->end());

1 个答案:

答案 0 :(得分:1)

当然不是,因为你的容器有指针,而不是对象。

要使用它,你需要std::vector<QActionDonald>或者,如果不需要改变的话,为std::max_element提供一个自定义比较器来应用正确的逻辑(即比较对象,而不是指针) )。