none
debug assertion failed RRS feed

  • 问题

  • Expression:Vector subscript out of range.

    //Program code:

    #include<iostream>
    #include<vector>
    using namespace std;

    int main()
    {
     char alp;
     vector<int> num(26,0);
     while(cin.get(alp))
     {
      switch(alp)
      {
       case 'A':                    //counting characters
       case 'a':num[0]++;    break;
       case 'B':
       case 'b':num[1]++;    break;
       case 'C':
       case 'c':num[2]++;    break;
       case 'D':
       case 'd':num[3]++;    break;
       case 'E':
       case 'e':num[4]++;    break;
       case 'F':
       case 'f':num[5]++;    break;
       case 'G':
       case 'g':num[6]++;    break;
       case 'H':
       case 'h':num[7]++;    break;
       case 'I':
       case 'i':num[8]++;    break;
       case 'J':
       case 'j':num[9]++;    break;
       case 'K':
       case 'k':num[10]++;   break;
       case 'L':
       case 'l':num[11]++;   break;
       case 'M':
       case 'm':num[12]++;   break;
       case 'N':
       case 'n':num[13]++;   break;
       case 'O':
       case 'o':num[14]++;   break;
       case 'P':
       case 'p':num[15]++;   break;
       case 'Q':
       case 'q':num[16]++;   break;
       case 'R':
       case 'r':num[17]++;   break;
       case 'S':
       case 's':num[18]++;   break;
       case 'T':
       case 't':num[19]++;   break;
       case 'U':
       case 'u':num[20]++;   break;
       case 'V':
       case 'v':num[21]++;   break;
       case 'W':
       case 'w':num[22]++;   break;
       case 'X':
       case 'x':num[23]++;   break;
       case 'Y':
       case 'y':num[24]++;   break;
       case 'Z':
       case 'z':num[25]++;   break;
       case ' ':num[26]++;   break;//couting space characters
       case '\t':num[27]++;  break;//counting tab characters
       case '\n':num[28]++;  break;//counting newline characters
       default:cout<<"error!"<<endl;
                          break;//insuring switch being broken
      }
     }
     for(vector<int>::size_type i=0;i!=29;i++)//outputing statistics results
      cout<<num[i]<<endl;
     return 0;
    }

    //what's the matter? And how to solve the problem?

    //using vs2005

    2012年10月6日 6:54

答案

  • vector<int> num(26,0);
    or
    vector<int> num(29,0);  ???

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    • 已标记为答案 廖并 2012年10月8日 6:55
    2012年10月7日 14:25
    版主

全部回复

  • vector<int> num(26,0);
    or
    vector<int> num(29,0);  ???

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    • 已标记为答案 廖并 2012年10月8日 6:55
    2012年10月7日 14:25
    版主
  • Thank you for your help and you patience!

    Actually it's a low-level error. and then i want to ask you that how to terminate the while loop.

    2012年10月8日 1:33
  • You can define a terminator and add it in the while expression

     while(cin.get(alp)&& alp !='whatever'


    麻烦把正确答案设为解答。

    2012年10月8日 6:41
    版主
  • I see! Thank you!

    2012年10月8日 6:54