c++ - STL list<Object> 迭代器用于更改列表中的对象

标签 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 循环永远不会执行。它只是直接跳到函数末尾。

注意:“Word”是一个自定义类,用于保存字符串和整数(该字符串有多少个)。 如果需要更多信息,请询问,我快死在这里了! 谢谢。

最佳答案

看起来您的列表是空的,因此 itr==words.end() 并且循环中的代码永远不会执行。

关于c++ - STL list<Object> 迭代器用于更改列表中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10408733/

相关文章:

c++ - 如何处理坏指针

c++ - char* 和 new 的一些错误

具有可变类型值的 C++ 键值容器

c++ - 以最小的开销编译时生成函数调度程序

c++ - 如何正确检查 istreambuf_iterator 是否已到达流末尾

python - 使用 if 语句的嵌套列表理解

Python循环速度源

string - SML - 在列表中查找元素并替换它

javascript - 克隆对象和函数内部引用

javascript - 使用 Three.js 使对象部分透明