vector iterator not dereferencable?请问出错原因...
我采用冒泡排序对vector容器的对象进行排序,vector的对象都是类CStudent的实例,并以每个实例的属性Total的大小为依据而排序,排序函数如下://排序函数...
我采用冒泡排序对vector容器的对象进行排序,vector的对象都是类CStudent的实例,并以每个实例的属性Total的大小为依据而排序,排序函数如下://排序函数,按总分排序,采用了冒泡排序算法void TotalPerformanceSort(vector<CStudent> &vec,vector<CStudent>::iterator &iter){ cout<<"未排序前该班学生信息:"<<endl; for(iter=vec.begin();iter!=vec.end();iter++) { cout<<(*iter).returnName()<<" "<<(*iter).returnTotal()<<endl; } vector<CStudent>::iterator it; CStudent temp; int control; for(iter=vec.begin();iter!=vec.end();iter++) { for(control=0,it=iter;it!=vec.end();it++) { if((*it).returnTotal()<=(*(it+1)).returnTotal()) { temp=it[1]; it[1]=it[0]; it[0]=temp; control++; } } if(control==0) break;//没有任何交换记录,表示已有序,退出排序 } cout<<"该班学生成绩排名为:"<<endl; for(iter=vec.begin();iter!=vec.end();iter++) { cout<<(*iter).returnName()<<" "<<(*iter).returnTotal()<<endl; }} 主函数的调用如下:vector<CStudent> class1; vector<CStudent>::iterator iter;.....//全部成绩排名 TotalPerformanceSort(class1,iter); 该程序在排序段出错,其他段没有问题,出错图示:
展开
2个回答
2012-01-01
展开全部
for(iter=vec.begin();iter!=vec.end();iter++)
{
for(control=0,it=iter;it!=vec.end();it++)
改成
for(iter=vec.begin();iter!=vec.end()-1;iter++)
{
for(control=0,it=iter;it!=vec.end()-1;it++)
{
for(control=0,it=iter;it!=vec.end();it++)
改成
for(iter=vec.begin();iter!=vec.end()-1;iter++)
{
for(control=0,it=iter;it!=vec.end()-1;it++)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询