次のコード スニペットを検討してください。
map<wstring,int>::iterator it;
map<wstring,int> bimap;
//Creating Bigrams out of monograms
for (it= container.begin(); it != container.end();)
{
bimap[it->first + L" "+((++it)->first)]++;
++it;
++it;
}
このコードを実行すると、プログラムがクラッシュし、そのクラッシュの理由は iterator の 2 番目のインクリメントですit
。なぜこのようになっているのですか?イテレータはインクリメントする必要があり、1 回ではなく 2 回インクリメントしています。どうしたの?
上記の for ステートメントで実際に行っているように、隣接する 2 つのマップ項目の値を他のマップに保存したい場合は、どうすればよいですか? 他の3つのアイテムごとにまとめて保管したい場合はどうすればよいですか?
それぞれ続行するにはイテレータを更新する必要がありますが、その方法がわかりません。