如何使用迭代器

时间:2017-10-05 19:44:03

标签: c++ c++11

我有一个函数,它检查字符串和字符串中重复的次数。

它存储为(例如)字符串是"你好" [h] => 1 [e] => 1 [1] => 2 [o] = 1

每当一封信不止一次出现时,我需要更新它。

我尝试使用

it->second = it->second+1;

但它不起作用 我怎么能这样做?

完整代码

int fn(string a) {
  map<char,int> mymap;
   for(int i=0;i<a.size();i++)
   {
       std::map<char, int>::iterator it = mymap.find(i);
       if(it!=mymap.end())
       {
            //say i need to update occurrence from 1 to 2 or 2 to 3...
           it->second = it->second+1;//(how can i do that)
       }
       else
       mymap.insert(pair<char,int>(a[i],1));
   }
   std::map<char,int>::iterator i;
   for(i=mymap.begin();i!=mymap.end();i++)
   {
       cout<<i->first<<i->second;
   }
}

1 个答案:

答案 0 :(得分:11)

您不需要所有代码。你可以说

for (auto c : a) mymap[c]++;

这是有效的,因为当给定密钥不存在时,map operator[]会插入零初始化元素。