循环内的迭代器不会递增

Iterator inside of loop will not increment

本文关键字:迭代器 循环      更新时间:2023-10-16

>我正在尝试比较两个字符串数组。每当我到达 if 语句中的 while 循环时,我都会陷入无限循环,因为即使我在循环中有一个迭代器,它也不会递增。我在循环中有cout<< finder;只是为了看看查找器的位置,它永远不会超过零。如果有人能帮忙,我将不胜感激。

if (memory[p] == "J")
    {
        if (is_number(memory[p+1]))
        {
            worker = atoi(memory[p+1].c_str());
            p = worker;
            continue;
        }
        else
        {
            int finder = 0;
            while (memory[p+1] != Symtablelab[finder])
            {
                cout << finder;
                finder = finder + 1;
            }
            if (memory[p+1] == Symtablelab[finder])
            {
                int k = Symtablepos[finder];
                worker = atoi(memory[k].c_str());
                p = worker;
                continue;
            }
        }
    }

你说finder永远不会递增到零以上。它是否打印查找器 = 0?如果是这样,则意味着

memory[p+1] = Symtablelab[1]

就在第一次迭代之后,所以 while 循环被终止,finder坚持在 1。

编辑如果你说,它在 while 语句中连续打印finder = 0,那么你可能在外部forwhile(循环)语句中if (memory[p] == "J")

如果它是连续打印查找器并且它是 0,那么我必须问你发布的整个代码片段是否包含在你没有发布的 while 语句中。如果循环卡在无限循环中,那么您发布的语句中包含的 while 循环不会增加 finder 是绝对没有意义的。

或者另一种可能性是 Symtablelab 覆盖了"["]"运算符。如果这些事情都不是真的,那么就会发生一些令人难以置信的不稳定的事情。