簡體   English   中英

我可以在STL :: vector :: iterator上執行指針算術嗎

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM