对于循环不递增

时间:2016-10-15 21:18:36

标签: c++ for-loop

很抱歉,这是一个快速的问题,任何人都可以告诉为什么这个for循环不会递增i或j?他们留在0和1。

void Environment::tourneyselection(std::vector<Tree>& popvec) {
    std:random_shuffle(popvec.begin(), popvec.end());
    for (int i = 0, j = 1; j <= Popsize; i + 2, j + 2) {
        std::cout << popvec[i].fitness << " and " << popvec[j].fitness << ":";
        if (popvec[i].fitness < popvec[j].fitness) {
            popvec.erase(popvec.begin() + i);
            std::cout << " erase " << i << std::endl;
        }
        else {
            popvec.erase(popvec.begin() + j);
            std::cout << " erase " << j << std::endl;
        }

    }
}

谢谢

2 个答案:

答案 0 :(得分:2)

j + 2

您根本不修改j。你想说

j += 2

同样适用于i + 2

答案 1 :(得分:1)

i + 2j + 2都没有进行分配,您正在执行计算但未将结果分配给ij

尝试i += 2j += 2

或者,如果您想保持简单或只是稍微分解一下 - 请尝试i = (i + 2)j = (j + 2)

+=运算符允许您同时执行计算,分配结果。