我是一名业余爱好者,所以请耐心等待,但我的研究已经结束,没有解决这个问题。
这段代码符合要求,但是当我调试时,很明显该过程在到达 for 循环时就存在,并且从不执行其中的内容(这是我需要做的)。
void insertWord(list<Word> &words, string str)
{
list<Word>::iterator itr;
for (itr = words.begin(); itr != words.end(); itr++ ) //EXITS HERE
{
if (str == (*itr).aWord)
{
(*itr).iterateCount();
return;
}
if (str > (*itr).aWord)
{
words.push_back(Word(str));
return;
}
}
}
我不明白为什么 for 循环永远不会执行。它只是直接跳到函数末尾。
注意:“Word”是一个自定义类,用于保存字符串和整数(该字符串有多少个)。 如果需要更多信息,请询问,我快死在这里了! 谢谢。
最佳答案
看起来您的列表是空的,因此 itr==words.end()
并且循环中的代码永远不会执行。
关于c++ - STL list<Object> 迭代器用于更改列表中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10408733/