目前我使用迭代器搜索向量并测试其元素。我使用
访问元素std::vector<int>::iterator it;
if (*it == 0);
我可以使用相同的指针算术样式逻辑来测试下一个元素(不改变我的迭代器)吗?
我首先要看看它是否会将迭代器推出界限
if (it != myvec.end())
然后测试当前元素和下一个元素
if (*it == 1 && *(it + 1) == 1)
这会像我期望的那样使用指针吗?
答案 0 :(得分:16)
是的,std::vector
的迭代器是random access iterators,因此您可以添加/减去整数值以获得其他有效的迭代器。
从技术上讲,它可能不是指针算术,但它们就像指针一样。
答案 1 :(得分:3)
这确实可以用作向量迭代器是随机访问迭代器。这不仅可以像使用指针一样对它们进行操作,而且它们几乎都是使用指针/指针算法实现的。
答案 2 :(得分:1)
好吧,如果迭代器在容器的最后一个元素上,那么
*(it + 1)
有未定义的行为。 你应该检查一下
it + 1 != end
在解除引用之前。