我是靠谱客的博主 专注心锁,这篇文章主要介绍C++自学血汗史(七):基于范围的for循环与vector小心注意,现在分享给大家,希望可以做个参考。

//统计各个成绩分段的人数

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#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++自学血汗史(七):基于范围内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(75)

评论列表共有 0 条评论

立即
投稿
返回
顶部