指向前一个值,没有自减指针

Point to previous value without decrementing pointer

本文关键字:指针 一个      更新时间:2023-10-16

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

假设我有两个迭代器,it1it2。给定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;