读书人

不知道错在哪求解?多谢

发布时间: 2012-03-18 13:55:38 作者: rapoo

不知道错在哪,求解??谢谢
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函数没问题 不过最好这样写

C/C++ code
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吧
[解决办法]
楼主贴详细点吧
C/C++ code
代码放这里
[解决办法]
探讨

引用:

哪里不对?

编译通过了就是输出的分数不正常,??不知到哪出来问题

[解决办法]
探讨

find函数没问题 不过最好这样写
C/C++ code

list<Score>::iterator find (const list< Score> &scores, CompareByNumber_Equal cmp)
{
for (list<Score>::const_iterator iter = scores.begin();
iter != score……

[解决办法]
其实 楼主的score 是那样的话 还不如使用map

读书人网 >C++

热点推荐