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