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); 该程序在排序段出错,其他段没有问题,出错图示: 展开
 我来答
匿名用户
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++)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
radish34
2011-12-29 · 贡献了超过208个回答
知道答主
回答量:208
采纳率:0%
帮助的人:110万
展开全部
typename vector<T>::iterator iter; for(iter=myvector.begin();iter!=你擦除报到m的元素时有个逻辑错误,当报道的m元素为第一个元素时,你使用:
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式