在我的代码中,我需要这样做:

if (edges[j].ConnectedToNode() != i) //problem line
{
    edges.push_back(Edge(i, j, nodes[i].Position(), nodes[j].Position(), distanceToNode));
}

但是,edges[j] 可能还不存在。如何对此进行测试以避免和索引超出范围的异常? (这与路径节点有关,本质上如果有一条边将 j 连接到 i,我不想在 i 到 j 之间添加另一个边。

最佳答案

在访问 edges[j] 之前检查 j < edges.size()

编辑:

为了说明 Mark Ransom 的评论:

if (j < edges.size() && edges[j].ConnectedToNode() != i) //problem line
{
    edges.push_back(Edge(i, j, nodes[i].Position(), nodes[j].Position(), distanceToNode));
}

关于c++ - 检查 vector 索引是否为空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9006230/

10-11 18:30