文字列とそれが文字列で繰り返される回数をチェックする関数があります。イテレータを使用してマップの2番目の値を更新する方法
それは=> 1 [H]の文字列が "こんにちは" である(例えば)として格納されている[E] => 1 [L] => 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 ) –