std::advance
来自cppreference.com
| 定义于头文件 <iterator>
|
||
| template< class InputIt, class Distance > void advance( InputIt& it, Distance n ); |
(C++17 前) | |
| template< class InputIt, class Distance > constexpr void advance( InputIt& it, Distance n ); |
(C++17 起) | |
增加给定的迭代器 it 以 n 个元素的步长。
若 n 为负,则迭代器自减。该情况下, InputIt 必须满足遗留双向迭代器 (LegacyBidirectionalIterator) 的要求,否则行为未定义。
目录 |
[编辑] 参数
| it | - | 要前进的迭代器 |
| n | - | it 要前进的元素数
|
| 类型要求 | ||
-InputIt 必须满足遗留输入迭代器 (LegacyInputIterator) 的要求。
| ||
[编辑] 返回值
(无)
[编辑] 复杂度
线性。
然而,若 InputIt 额外满足遗留随机访问迭代器 (LegacyRandomAccessIterator) 的要求,则复杂度是常数。
[编辑] 注意
若指定的自增或自减序列要求一个不可自增迭代器(例如尾后迭代器)自增,或不可自减迭代器(例如首迭代器或孤立迭代器)自减,则行为未定义。
[编辑] 示例
运行此代码
#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
[编辑] 参阅
| (C++11) |
令迭代器自增 (函数模板) |
| 返回两个迭代器间的距离 (函数模板) |

