的效率,我有一張地圖,定義爲幫助,地圖通過C++
map<string,map<string,int> > subjectCodes;
每個主題串都有自己的課程
地圖我也有2個迭代器定義
map<string,map<string,int> >::iterator it;
map<string,int>::iterator jt;
一個迭代通過每個主題和一個迭代通過每個課程每個主題
我需要使我的程序讀取了50,000行信息,將它們排列到地圖中,並在1秒內打印出全部信息。我想我已經想出了將所有內容添加到地圖中的最快方法,但是我正在努力加快打印速度,目前爲0(n平方),並導致我的程序花費大約3秒鐘時間運行。
這裏是我的打印代碼:
//print out sorted list
for(it=subjectCodes.begin();it!=subjectCodes.end();it++)
{
cout<<it->first<<": "<<(it->second).size()<<" courses"<<endl;
for(jt=(it->second).begin();jt!=(it->second).end();jt++)
{
cout<<" "<<jt->first<<": "<<jt->second<<" classes"<<endl;
}
}
有打印地圖在地圖中,有人能告訴我的更有效的方法?謝謝
你是否檢查過輸入3s後花了多少時間?我知道你說過你已經有了「最快的方式」來填充地圖,但是你是否儘可能快地閱讀輸入文件?你使用什麼緩衝區大小? – 2011-05-11 22:18:47
爲什麼這個「1秒」是一個限制?你真的把這個輸出做到物理設備(例如終端或打印機)嗎?顯然,你不能在1秒內寫出很多這樣的文字,也不應該嘗試。 – 2011-05-11 22:37:18