Я повторяю map
в C++
, используя for loop
, но оно застревает в бесконечном l oop. Я искал другие похожие вопросы, и самый близкий из них этот вопрос , но ответ на этот вопрос не отвечает на мой запрос, потому что в этом вопросе автор вносит изменения в объект карты, но я не делаю любые изменения объекта карты во время for loop
.
Мой код выглядит следующим образом (я пытался комментировать разные строки и обнаружил, что бесконечная l oop вызвана 11-й строкой (else statement
), но я не мог не понять точную проблему):
int main(){
map<int,int> dic; //dic is the relevant map object
dic[0]=1; dic[1]=1; dic[2]=1; dic[3]=1; //dic = {0:1, 1:1, 2:1, 3:1}
int k=1;
int sol=0;
for(map<int,int>::iterator iter=dic.begin(); iter!=dic.end(); iter++){
int a=iter->first; int b=iter->second;
if(k==0) sol+=b*(b-1)/2;
else sol+=b*dic[a+k]; //after some trials, I found that problem is in this line but I couldn't figure out the problem
}
return sol;
}