这是一个非常简单的问题。
基本上,我说有两个迭代器,it1
和it2
。给定it1
的值,我想定义it2
以指向一个地址之前的位置。如果我能在一行中完成它会很酷,例如:
vector<int>::iterator it2 = --it1;
但是,这会同时减少它1,所以我必须重新增加它1。
vector<int>::iterator it2 = --it1;
++it1;
如果这两行涉及性能密集型循环,我会有很多it1
来回无缘无故,只是为了定义it2
。另一方面,如果我这样做:
vector<int>::iterator it2 = it1;
--it2;
这也略微不理想,因为它涉及两个步骤。有没有办法在一个地方做到这一点?
答案 0 :(得分:10)
您正在寻找std::prev
:
vector<int>::iterator it2 = std::prev(it1);
对于vector
的迭代器,指针和随机访问迭代器,您也可以使用运算符-
:
vector<int>::iterator it2 = it - 1;