STL map 效率问题 map.find() 查找居然花费了40多分钟,望高手指教
map<string,string> mymap;
mymap 有近4000个
mymap["022"]="天津"
mymap["010"]="北京"
……
有285万
021
022
023
……
等待查找的字符串存在txt文件中
map.find() 查找居然花费了40多分钟!!小弟不知道哪出了问题,map的效率不可能这么低吧。希望高手指教指教,谢谢!
(以下是主要程序段)
while(GetPhoneNoFromTXT(fp,buf)) //fp 为存放待查找字符串
{
if(mymap.find(buf)!=mymap.end())
{
_snprintf(fname,sizeof(fname),"%s.txt",mymap[buf].c_str());
if((fpnew=fopen(fname,"at+"))==NULL)
{
cout<<"cannot open "<<fname<<endl;
return false;
}
fwrite(buf,sizeof(buf),1,fpnew);
fprintf(fpnew, "\n");
fclose(fpnew);
}
else
{
if(!fpUnknown)
{
if((fpUnknown=fopen("Unknown.txt","w+"))==NULL)
{
cout<<"cannot open fpUnknown.txt"<<endl;
return false;
}
}
fwrite(buf,sizeof(buf),1,fpUnknown);
fprintf(fpUnknown, "\n");
}
memset(&buf, 0, sizeof(buf));
}