函数模板
<iterator>

std::next

template <class ForwardIterator>  ForwardIterator next (ForwardIterator it,       typename iterator_traits<ForwardIterator>::difference_type n = 1);
获取下一个元素的迭代器
返回一个指向 it 前进 n 个位置后所指向的元素的迭代器。

it 不会被修改。

如果 it 是一个 随机访问迭代器,则函数仅使用一次 operator+operator-。否则,函数将重复使用复制的迭代器的递增或递减运算符(operator++operator--),直到前进 n 个元素。

参数

it
基准位置的迭代器。
ForwardIterator 至少应为 前向迭代器
n
偏移的元素位置数(默认为 1)。
对于 随机访问双向 迭代器,此值只能为负数。
difference_type 是表示 ForwardIterator 类型迭代器之间距离的数值类型。

返回值

指向距离 it n 个位置的元素的迭代器。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// next example
#include <iostream>     // std::cout
#include <iterator>     // std::next
#include <list>         // std::list
#include <algorithm>    // std::for_each

int main () {
  std::list<int> mylist;
  for (int i=0; i<10; i++) mylist.push_back (i*10);

  std::cout << "mylist:";
  std::for_each (mylist.begin(),
                 std::next(mylist.begin(),5),
                 [](int x) {std::cout << ' ' << x;} );

  std::cout << '\n';

  return 0;
}

输出

mylist: 0 10 20 30 40


复杂度

随机访问迭代器 的常量。
否则,线性复杂度为 n

迭代器有效性

无效果。

数据竞争

该函数会访问迭代器,但绝不会 解引用(调用时不会访问被指向的对象)。

异常安全

如果对复制的迭代器执行的任何算术运算引发异常,则抛出该异常,并提供与该运算相同的保证级别。

另见