读书人

c++中关联容器地图删除时的疑惑

发布时间: 2012-12-14 10:33:07 作者: rapoo

c++中关联容器map删除时的疑惑
程序很简单:
int main()
{
string str;
map<string,int> wordCount;
while(cin>>str)
{
//对于每个单词,都尝试去插入它
pair<map<string,int>::iterator,bool>ret = wordCount.insert(make_pair(str,1));
//通过检测返回值来判断插入是否成功
if(!ret.second)
//插入失败表明map中有这个单词,只需要把对应键的值自增即可
++ret.first->second;
}


map<string,int>::iterator it_map = wordCount.begin();
cout<<"word"<<"\t\t"<<"count"<<endl;
for(;it_map != wordCount.end();++it_map)
cout<<it_map->first<<"\t\t"<<it_map->second<<endl;

map<string,int>::iterator iter = wordCount.begin();
wordCount.erase(iter);
cout<<wordCount.begin()->second<<" "<<wordCount.begin()->first<<" has been removed!"<<endl;

return 0;

}
就是建立一个map容器,然后往里写入字符串统计了字符串的个数。然后我想删除容器中的第一个元素,但是并没有达到我想要的结果:我输入b b c c b b a a以后,显示的却是:2 b has been removed!这是为什么呢?

读书人网 >C++

热点推荐