首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

不知道错在哪,求解?多谢

2012-03-18 
不知道错在哪,求解??谢谢struct CompareByNumber_Equal{unsigned int number //学号bool operator () (in

不知道错在哪,求解??谢谢
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> &amp;scores, CompareByNumber_Equal cmp)
{
for (list<Score>::const_iterator iter = scores.begin();
iter != score……

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

热点排行
Bad Request.