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

概述

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

#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小心注意所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部