很抱歉,这是一个快速的问题,任何人都可以告诉为什么这个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;
}
}
}
谢谢
答案 0 :(得分:2)
j + 2
您根本不修改j
。你想说
j += 2
同样适用于i + 2
。
答案 1 :(得分:1)
i + 2
和j + 2
都没有进行分配,您正在执行计算但未将结果分配给i
或j
尝试i += 2
和j += 2
或者,如果您想保持简单或只是稍微分解一下 - 请尝试i = (i + 2)
和j = (j + 2)
+=
运算符允许您同时执行计算,分配结果。