对于不递增的循环

For loop not incrementing

本文关键字:循环 于不递      更新时间:2023-10-16

很抱歉,这是一个快速的问题,有人能说出为什么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;
        }
    }
}

感谢

j + 2

您根本没有修改j。你想说

j += 2

i + 2也是如此。

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

尝试i += 2j += 2

或者,如果你想保持简单或只是把它分解一下——试试i = (i + 2)j = (j + 2)

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