不知道错在哪,求解??谢谢
struct CompareByNumber_Equal
{
unsigned int number; //学号
bool operator () (int current_number) const
{
return (current_number == number);
}
};
list<Score>::iterator find (list< Score> scores, CompareByNumber_Equal cmp)
{
for (list<Score>::iterator iter = scores.begin();
iter != scores.end();
++iter)
{
if (cmp (iter->number))
{
return iter;
}
}
return scores.end() ;
}
void StudentScoreManager::OutputScores() const
{
for (unsigned int i=0; i<students.size(); i++)
{
unsigned int number = students[i].number; //学号
cout << "学号:" << number << endl;
cout << "姓名:" << students[i].name << endl;
//查找成绩:
CompareByNumber_Equal cmp;
cmp.number=number;
list<Score>::const_iterator iter = find(scores, cmp);
if (iter == scores.end())
{
//找不到成绩:
cout << "成绩:查无成绩。"<<endl;
}
else
{
//查到成绩了,显示:
cout << "成绩:" << iter->mark<<endl;
}
}
}
find函数有问题吗为什么输出的分数不对??到底哪出问题
[解决办法]
find里面的scores从哪来的 ,神奇的出现了
list<Score>::iterator find (list< Score> scores, CompareByNumber_Equal cmp)
参数scores最好用引用
[解决办法]
find函数没问题 不过最好这样写
list<Score>::iterator find (const list< Score> &scores, CompareByNumber_Equal cmp){ for (list<Score>::const_iterator iter = scores.begin(); iter != scores.end(); ++iter){ if (cmp (iter->number)) { return iter; }} return iter; //运行到这里iter == scores.end()为true}
[解决办法]
哪里不对?
[解决办法]
score类呢?
[解决办法]
score结构体中有number,name和mark吧
[解决办法]
楼主贴详细点吧代码放这里
[解决办法]