STL列出<object>迭代器来更改列表中的对象</object>

时间:2012-05-02 06:26:11

标签: c++ list object stl iterator

我是一名业余爱好者,所以请耐心等待我,但是我的研究结束时没有找到解决办法。

这段代码很好,但是当我调试时,很明显程序在到达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(有多少字符串)。 如果需要更多信息,请问,我在这里死! 谢谢。

2 个答案:

答案 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")]++;