VS2012跳线

时间:2012-12-21 05:12:05

标签: c++ qt visual-studio-2012

我有这样的代码:

QVector<Point> legalMoves = field.getLegalMoves();
QVector<Cell> costs;
costs.reserve(legalMoves.size());
for (QVector<Point>::iterator i = legalMoves.begin(); i < legalMoves.end(); ++i)
    costs.push_back(checkCost(field, *i, player, -100, 100));
Cell cost;
if (player)  {
    QVector<Point>::iterator m1 = legalMoves.begin();
    QVector<Cell>::iterator m2 = costs.begin();
    QVector<Cell>::iterator j = costs.begin() + 1;
    for (QVector<Point>::iterator i = legalMoves.begin() + 1; i < legalMoves.end(); ++i, ++j)
        if (j->status > m2->status) {
            m1 = i;
            m2 = j;
        }
    cost=*m2;
}
else  {
    QVector<Point>::iterator m1 = legalMoves.begin();
    QVector<Cell>::iterator m2 = costs.begin();
    QVector<Cell>::iterator j = costs.begin() + 1;
    for (QVector<Point>::iterator i = legalMoves.begin() + 1; i < legalMoves.end(); ++i, ++j)
        if (j->status < m2->status) {
            m1 = i;
            m2 = j;
        }
    cost=*m2;
}
QVector<Point> moves;
QVector<Cell>::iterator j = costs.begin();
for (QVector<Point>::iterator i = legalMoves.begin(); i < legalMoves.end(); ++i, ++j)
    if (j->status == cost.status)
        moves.push_back(*i);
short index = qrand()%moves.size();
return moves[index];            

}

当我调试它时,编译器只是跳过循环中的这些部分:

if (j->status < m2->status) {
                m1 = i;
                m2 = j;
            }

表示函数返回第一个Point(或具有相同Cell值而不是min / max的任何其他Point)。为什么会发生这种情况?如何解决它?

0 个答案:

没有答案