在对象矢量中查找最大值

arj*_*soh 0 c++ iterator vector max

我在B类中有一个对象A的向量v,其中每个对象都有一个成员:int level.我想找到向量v中所有对象级别的最大值.为此,我使用函数:

int B::findMaxLevel()
{
vector<int> levels;
vector<A*>::iterator it;

for(it=v.begin();it!=v.end();++it)
{
    if(find(levels.begin(), levels.end(), (*it)->getLevel())!=levels.end())
        levels.push_back((*it)->getLevel());
}

return *max_element(levels.begin(), levels.end());

}
Run Code Online (Sandbox Code Playgroud)

但是我得到错误:断言失败,矢量迭代器不可分辨.我应该另外定义一个int迭代器吗?有没有更好的方法来实现我想要的功能?

Moh*_*mad 6

我想你的问题是最后一行.空向量将在该行导致此错误.

实际上你根本就没有填充levels.它应该是==levels.end()代替!=levels.end()

另外,请查看此处的示例代码,并尝试使用用户指定的比较函数对象而不是多个副本.

    template <class ForwardIterator, class Compare>
    ForwardIterator max_element ( ForwardIterator first, ForwardIterator last, Compare comp );
Run Code Online (Sandbox Code Playgroud)