【发布时间】:2012-06-25 12:03:36
【问题描述】:
我有一个 B 类中对象 A 的向量 v,其中每个对象都有一个成员:int 级别。我想找到向量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 迭代器吗?有没有更好的方法来实现我想要的功能?
【问题讨论】:
-
您在哪一行收到此错误消息?
-
如果
v为空,然后levels为空,max_element返回levels.end()怎么办? -
max_element长什么样子? -
@JoachimPileborg cplusplus.com/reference/algorithm/max_element
-
@Mohammad 啊!
using namespace std;不好的一个很好的例子。