MyException - 我的异常网
当前位置:我的异常网» C++ » vector 对象数组删除有关问题

vector 对象数组删除有关问题(2)

www.MyException.Cn  网友分享于:2013-02-16  浏览:73次

{
cout<<"平均成绩是: "<<sum/num;
}

int _tmain(int argc, _TCHAR* argv[])
{
int i=0;
double number=1,score=0;
char name[20];
cout<<"请输入学生的学号(按0结束输入),姓名,成绩:"<<endl;
vector<Student>Stu;
for(i=0;number!=0;i++)
{
cin>>number;
if(number==0) break;
cin>>name>>score;
Student stu;
stu.setdata(number,name,score);
Stu.push_back(stu);
}
for(i=0;i<Stu.size();i++)
{
Stu[i].disp();
cout<<endl;
}
cout<<endl;
cout<<"请输入要删除学号"<<endl;
double mn;
cin>>mn;
/*
for(int e=Stu.size()-1;e>=0;e--)
if(Stu[e].geta() ==mn)
{
Stu.erase(Stu.begin()+e);
break;
}  
*/
for(vector<Student>::iterator e = Stu.begin(); e != Stu.end(); e++)
{
if(e->geta() == mn)
{
Stu.erase(e);
break;
}
}
Student::avg();
cout<<endl;
system("pause");
return 0;
}

请输入学生的学号(按0结束输入),姓名,成绩:
1 aa 89
2 bb 79
3 cc 82
4 dd 93
5 ee 81
0
1     aa     89
2     bb     79
3     cc     82
4     dd     93
5     ee     81

请输入要删除学号
3
平均成绩是: 84.8
------解决方案--------------------
对于你自己i的代码
1.
if(Stu[i].geta() ==mn)

改成
if(Stu[e].geta() ==mn)

2.
Stu.erase(Stu.begin()+e);

后添加break语句

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有