我在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());
}
但是我得到错误:断言失败,矢量迭代器不可分辨。 我应该另外定义一个int迭代器吗?有没有更好的方法来实现我想要的功能?
答案 0 :(得分:6)
我猜你的问题出在最后一行。空向量将在该行导致此错误。
实际上你根本没有填写levels
。它应该是==levels.end()
而不是!=levels.end()
另外,请查看here中的示例代码,并尝试使用用户指定的比较函数对象而不是多个副本。
template <class ForwardIterator, class Compare>
ForwardIterator max_element ( ForwardIterator first, ForwardIterator last, Compare comp );
答案 1 :(得分:0)