在线文档教程
C++
迭代器 | Iterator

std::advance

STD:预付款

Defined in header
template< class InputIt, class Distance > void advance( InputIt& it, Distance n (until C++17)
template< class InputIt, class Distance > constexpr void advance( InputIt& it, Distance n (since C++17)

给定迭代器增量it通过n元素。

如果n是负的,迭代器就会减少。在这种情况下,InputIt必须符合BidirectionalIterator,否则行为就没有定义。

参数

it-iterator to be advanced
n-number of elements it should be advanced

类型要求

-输入必须符合输入器的要求。

返回值

%280%29

复杂性

线性的。

但是,如果InputIt额外满足RandomAccessIterator,复杂性是不变的。

注记

如果指定的增量或递减序列要求非增量迭代器%28(如过去的结束迭代器%29)递增,或者不递减迭代器%28(如前迭代器或奇异迭代器%29)减少,则行为未定义。

二次

#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 << '\n'; }

二次

产出:

二次

4

二次

另见

next (C++11)increment an iterator (function)
distancereturns the distance between two iterators (function)

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/iterator/prep