指向上一个值而不递减指针

时间:2016-10-14 17:30:27

标签: c++ pointers

这是一个非常简单的问题。

基本上,我说有两个迭代器,it1it2。给定it1的值,我想定义it2以指向一个地址之前的位置。如果我能在一行中完成它会很酷,例如:

vector<int>::iterator it2 = --it1;

但是,这会同时减少它1,所以我必须重新增加它1。

vector<int>::iterator it2 = --it1;
++it1;

如果这两行涉及性能密集型循环,我会有很多it1来回无缘无故,只是为了定义it2。另一方面,如果我这样做:

vector<int>::iterator it2 = it1;
--it2;

这也略微不理想,因为它涉及两个步骤。有没有办法在一个地方做到这一点?

1 个答案:

答案 0 :(得分:10)

您正在寻找std::prev

vector<int>::iterator it2 = std::prev(it1);

对于vector的迭代器,指针和随机访问迭代器,您也可以使用运算符-

vector<int>::iterator it2 = it - 1;