概述
//统计各个成绩分段的人数
#include<iostream>
#include<string>
#include<vector>
using namespace std;
//统计各个成绩分段的人数
int main()
{
vector<unsigned> ivec(11,0);//这里如果不初始化为0,那么又会出现之前越界的问题,debug显示初始化vector没问题
unsigned grade;
//cout<<grade;//grade初始化没问题
while (cin>>grade)
{
if(grade<=100)
++ivec[grade/10];
//控制条件用n是否合理?理论上我每回车一次,程序数据记一次数,所以应该以满了为条件吧,满了好像也不对
if(cin.get()=='n')//控制结束的情况,debug证明问题与结束符号无关
break;
}
//vector<unsigned> ivec{0,1,2,3,4,5,6,7,8,9,10};//debug证明问题与输出循环无关
for(auto i:ivec) //对于ivec中的每一个元素
{
cout<<i<<" "; //输出元素,最后找到问题是输出的错误,为什么输出ivec[i]是不对的?i和ivac不等价
}
system("pause");
return 0;
}
今天的标志性低级错误:把基于范围的for循环中的i想成下标,它应该是类似于python中的for i in range的用法,所以如果再次在cout<<i<<" "用成cout<<ivec[i]<<" "的话,就是用某分段出现的次数作为下标再取对应下标中的元素了,这当然是个错误的情况。
PS:转载注明出处,如有侵权请联系作者删除。
最后
以上就是专注心锁为你收集整理的C++自学血汗史(七):基于范围的for循环与vector小心注意的全部内容,希望文章能够帮你解决C++自学血汗史(七):基于范围的for循环与vector小心注意所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复