[英]Can I do pointer arithmetic on an STL::vector::iterator
目前,我使用迭代器搜索向量並測試其元素。 我使用訪問元素
std::vector<int>::iterator it;
if (*it == 0);
我可以使用相同的指針算術樣式邏輯來測試下一個元素(無需更改迭代器)嗎?
我首先需要查看它是否會將迭代器推出邊界
if (it != myvec.end())
然后測試當前元素和下一個元素
if (*it == 1 && *(it + 1) == 1)
我可以通過使用指針來達到預期效果嗎?
是的, std::vector
的迭代器是隨機訪問迭代器,因此您可以添加/減去整數值以獲得其他有效的迭代器。
從技術上講,它可能不是指針算術,但它們的行為就像指針一樣。
由於向量迭代器是隨機訪問迭代器,因此這確實可以工作。 這不僅可以像對指針一樣對它們執行操作,而且可以使用指針/指針算術來實現它們。
好吧,如果迭代器位於容器的最后一個元素上,
*(it + 1)
具有未定義的行為。 你應該檢查一下
it + 1 != end
在取消引用之前。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.