c++ - 检查 vector 索引是否为空

标签 c++ vector

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

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/

相关文章:

c++ - 向 avformat_open_input 添加超时

c++ - 指定给 RtlFreeHeap 的无效地址的原因是什么

C++,预处理器语句

java - 如何将值和字符串输入到类对象中?获取空指针异常

c++ - 尝试进行一些规范化并不断出错

c++ - 按 C++ 中的公共(public)/重复元素对 vector 进行分组和排序

c++ - 加速 C++(第 3.2.1 节 : vector<double> homework)

c++ - 迭代器在C++内部如何工作?

c++ - std::vector 预分配(大小和容量 n + 2)

c++ - 统一初始化语法区别