我有一個函數,它檢查字符串中重複的字符和次數。如何使用迭代器更新映射的第二個值
它被存儲爲(例如)字符串是 「你好」 並[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;
}
}
我無法重現您的錯誤。當我嘗試編譯您提供的示例時,它工作正常。 –
@juanchopanza提供了優雅的解決方案。順便說一句:你的解決方案的問題只是一個錯字:'mymap.find(i)' - >'mymap.find(a [i])' –
[無法重現](https://ideone.com/TeHBNT ) –