为什么以下代码给出运行时错误

时间:2016-04-03 17:31:24

标签: c++

map <char,int> m;

map <char, int> :: iterator pos;

int main()

{

int t,n,i,max;
string str;
cin>>t;   // testcase
while(t--)
{
    max=1;
    cin>>n;

    for(i=0;i<n;i++)
    {
        m[str[i]]=0;
    }

    for(i=0;i<n;i++)
    {
        cin>>str[i];
        m[str[i]]=m[str[i]]+1;
    }

    for(i=0;i<n;i++)
    {
        if(m[str[i]]>max)
        {
            max=m[str[i]];
        }
    }
   cout<<n-max<<endl;
}
return 0;
}

现在为什么这段代码在每次编译时都会给出运行时错误..我在ideone.com上使用在线平台进行编译但它给出了同样的错误..请帮助解决这个问题

1 个答案:

答案 0 :(得分:2)

当您访问字符串中的字符时:

str[i]

该字符串的长度必须至少为i+1,您的字符串为空。