C++的标准库中提供了advance函数
template< class InputIt, class Distance >
void advance( InputIt& it, Distance n );
用于操作迭代器前进,如果n为负数则后退
#include <iostream>
#include <iterator>
#include <vector>
int main()
{
std::vector<int> v{3, 1, 4};
auto vi = v.begin();
std::advance(vi, 2);
std::cout << *vi << ' ';
vi = v.end();
std::advance(vi, -2);
std::cout << *vi << '\n';
}
运行程序输出:
4 1
advance不仅可以用于操作vector这类的随机迭代器,对于list这种双向迭代器也是可以的:
#include <iostream>
#include <iterator>
#include <list>
int main()
{
std::list<int> v = {1,2,3,4};