这是一个非常简单的问题。
基本上,说我有两个迭代器,it1
和it2
。给定it1
的值,我想定义it2
指向一个地址较早的位置。如果我可以一行完成,那就太酷了,例如:
vector<int>::iterator it2 = --it1;
但是,这同时减少了it1,因此我不得不重新增加it1。
vector<int>::iterator it2 = --it1;
++it1;
如果这两行涉及到性能密集型循环,那么我将无缘无故地来回传递许多
it1
,只是为了定义it2
。另一方面,如果我这样做:vector<int>::iterator it2 = it1;
--it2;
由于它涉及两个步骤,因此它也不是最优的。有没有一种方法可以做到这一点?
最佳答案
您正在寻找 std::prev
:
vector<int>::iterator it2 = std::prev(it1);
通常,对于
vector
的迭代器,指针和随机访问迭代器,还可以使用运算符-
:vector<int>::iterator it2 = it - 1;