首页 > STL编程 > STL迭代器辅助函数——advance

STL迭代器辅助函数——advance

Advance(i, n) increments the iterator i by the distance n. If n > 0 it is equivalent to executing ++i n times, and if n < 0 it is equivalent to executing --i n times. If n == 0, the call has no effect.

advance(i, n)使得迭代器i增加一个长度n。如果n>0,那么advance(i, n)等价于执行++i操作n次,如果n<0,那么等价于执行- -i操作n次,如果n=0,那么这个调用没有任何影响。

Defined in the standard header iterator, and in the nonstandard backward-compatibility header iterator.h.

定义在标准头文件<iterator>之中,也存在于向下兼容的(早期的STL)<iterator.h>头文件中。

  • InputIterator is a model of Input Iterator.
  • Distance is an integral type that is convertible to InputIterator's distance type.

 

第一个参数i是 Input Iterator. n的类型应该可以转换成InputIterator's distance类型。

  • i is nonsingular.
  • Every iterator between i and i+n (inclusive) is nonsingular.
  • If InputIterator is a model of input iterator or forward iterator, then n must be nonnegative. If InputIterator is a model of bidirectional iterator or random access iterator, then this precondition does not apply.

对于随即存取迭代器,复杂度是O(1),对于其他迭代器,复杂度是O(N)。下面看一个例子:

#include <iostream>
#include <list>
#include <algorithm>
#include <iterator>
using namespace std;

int main()
{
	list<int> coll;
	
	for(int i = 1; i <= 9; ++i)
	{
		coll.push_back(i);
	}
	
	list<int>::iterator pos = coll.begin();
	cout << *pos << endl;
	
	advance(pos, 3);
	cout << *pos << endl;
	
	advance(pos, -1);
	cout << *pos << endl;
	
	return 0;
}

觉得文章还不错?点击此处对作者进行打赏!


本文地址: 程序人生 >> STL迭代器辅助函数——advance
作者:代码疯子(Wins0n) 本站内容如无声明均属原创,转载请保留作者信息与原文链接,谢谢!


更多



分类: STL编程 标签: , ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.