如下: void AudioManager::LoadFiles() { for(vector<string>::iterator itr = files.begin();itr!=files.end();++itr) { string name = *itr; string fname(name); //cout<<"123 "<<fname<<endl; to_lower(name); shared_ptr<AudioBuffer> b; shared_ptr<AudioSource> p; AudioBridge bridge(fname); b.reset(new AudioBuffer(bridge.Get())); p.reset(new AudioSource(b.get())); name = name.substr(0,name.rfind(".")); name = name.substr(name.rfind("//")+1); cout<<name<<endl; //resList.insert(make_pair(name,p)); resList[name]=p; } cout<<"size is: "<<resList.size()<<endl; ResMapItr itr = resList.begin(); while(itr!=resList.end()) { (*itr).second->Play(); itr++; } files.clear(); } 在编写音频管理器的时候 发现这里有点问题 只插进去了一个有效的pair,但是之后使用size()是合理的啊?为何 百思不解啊