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