在 C 向量中使用迭代器:已解决的常见陷阱
迭代器对于遍历和操作 C 向量中的元素至关重要。然而,如果使用不当,它们可能会导致意想不到的结果。在本文中,我们将探讨向量运算中迭代器的常见问题,并提供解决方案来解决该问题。
在提供的代码片段中,尝试计算存储在向量中的点之间的距离。由于迭代器的使用不正确,预期结果与实际结果有所不同。该代码使用 std::distance() 函数,而没有所需的指针取消引用,导致距离计算不正确。
修复问题
要解决此问题,有有两种方法:
取消引用迭代器来获取指针:
修改函数以接受引用:
float distance(const point& p1, const point& p2) {
return sqrt((p1.x - p2.x)*(p1.x - p2.x)
(p1.y - p2.y)*(p1.y - p2.y));
}
通过此修改,不再需要直接取消引用迭代器,并且可以使用 distance(*ii, *jj) 或 distance(*ii, j) 执行距离计算(因为 j 也是迭代器) ).
一般建议使用第二种方式,这种方式更加清晰,并且避免了潜在的指针相关问题。此外,point 的 typedef 可以简化为使用 struct,而无需不必要的 typedef。
附加说明
以下是有效使用迭代器的一些附加提示:
By了解这些概念并遵循这些准则,您可以避免在 C 向量中使用迭代器时的常见陷阱,并确保准确高效的代码执行。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3