Home C&C++函数库 c++ 语法 程序源码 Linux C库

std::

advance

函数模板  <iterator>

template <class InputIterator, class Distance>
  void advance (InputIterator& it, Distance n);

向前移动迭代器
将迭代器向前移动n个元素的位置。

如果是随机访问迭代器,则该函数只使用一次operator+或operator-。 否则,该函数将重复使用递增或递减操作符(operator++或operator——),直到增加n个元素为止。

🐭  参数



it
要移动的迭代器。 InputIterator至少应该是一个输入迭代器。

n
移动n个元素位置。 这仅适用于随机访问和双向迭代器。 Distance应该是一个数值类型,能够表示该类型迭代器之间的距离。

🔙  返回值



none

🍅  示例



// advance example
#include <iostream>     // std::cout
#include <iterator>     // std::advance
#include <list>         // std::list

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

  std::list<int>::iterator it = mylist.begin();

  std::advance (it,5);

  std::cout << "The sixth element in mylist is: " << *it << '\n';

  return 0;
}

输出:
The sixth element in mylist is: 50

👠 复杂性



随机访问迭代器常量。否则就是n的线性。

↜ 迭代器的有效性



向前移动输入迭代器(至少不是前向迭代器)可能会使从其值获得的任何迭代器、指针和引用失效。

⇄ 数据竞争



该函数会修改迭代器,但不会解除对迭代器的引用(调用不会访问任何指向对象)。
还要注意上面描述的对迭代器有效性的影响。

🐚 异常安全性



如果在迭代器上执行的任何算术操作抛出,则抛出,并提供与此类操作相同级别的保证。

🍄  另请参阅



distance 返回迭代器之间的距离(函数模板 )
prev 获取前一个元素的迭代器(函数模板 )
next 获取下一个元素的迭代器(函数模板 )

联系我们 免责声明 关于CandCplus 网站地图