我是一名业余爱好者,所以请耐心等待我,但是我的研究结束时没有找到解决办法。
这段代码很好,但是当我调试时,很明显程序在到达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循环。它只是跳到函数的末尾。
NB:&#34; Word&#34;是一个自定义类,用于保存字符串和int(有多少字符串)。 如果需要更多信息,请问,我在这里死! 谢谢。
答案 0 :(得分:2)
看起来你的列表是空的,所以itr==words.end()
和循环中的代码永远不会执行。
答案 1 :(得分:0)
您可以使用std::map
:
std::map<Word, int> histogram;
histogram[Word("hello")] += 1;
histogram[Word("hello")]++; // equivalent
histogram[Word("vertigo")]++;