在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