回 帖 发 新 帖 刷新版面

主题:求救啊!!!!!

#include<iostream>
#include<string>
#include<map>
using namespace std;
void main()
{
    multimap<string,string> mu;
    string zz;
    cout<<"添加--输入作者:";
    while(cin>>zz)
    {
        string ss;
        cout<<"添加--输入书名:";
        cin>>ss;
        mu.insert(make_pair(zz,ss));
        cout<<"添加成功"<<endl;
        string ii;
        cout<<"1.继续添加 其他:查询已有书本?";
        cin>>ii;
        if(ii=="1")
        {
            cout<<"添加--输入作者:";
            continue;
        }
        else break;
    }

    for(multimap<string,string>::iterator it=mu.begin();it!=mu.end();it++)
        for(char c='a';c<='z';c++)
            if((it->first)[0]==c)
            {
                pair<multimap<string,string>::iterator,multimap<string,string>::iterator> p=mu.equal_range(it->first);
                cout<<"name beginning with '"<<c<<"':"<<endl;
                cout<<it->first;
                for(multimap<string,string>::iterator it2=p.first;it2!=p.second;it2++)
                    cout<<","<<it2->second;
                cout<<endl;
                it=p.second;
            }
        
}
大神们,,为什么这么程序运行后内存会出错啊。。运行结果是对的。。

回复列表 (共1个回复)

沙发

如果 p.second 是 end()
it=p.second; 之后 if((it->first)[0]==c) 当然会报错

我来回复

您尚未登录,请登录后再回复。点此登录或注册