考慮下面的代碼片段:爲什麼在C++中迭代映射失敗?
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;
}
如果我運行此代碼的程序崩潰和該崩潰的原因是迭代it
的第二個增量。這是爲什麼?迭代器需要增量,我將其遞增兩次而不是一次!它出什麼問題了?
如果我想將兩個相鄰的地圖項值保存到其他地圖中,例如我在上面的語句中實際執行的操作,應該如何處理它?如果我想結合並將每3件其他物品放在一起,該怎麼辦?
我需要分別更新迭代器,但我不知道該怎麼做。
我迷失在你的'++'叢林中......你自己呢? – billz
實際上,第一個++將增加每個值出現次數。這兩個其他++實際上是爲了去下一對值。 (假設它+ 2) – Breeze