繁体   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