转换主要是使用stl中的advance和distance函数来进行的,
advance是将iterator移动指定个元素,distance是计算两个iterator直接的距离。

distance计算第一个参数到第二个参数之间的距离。如果第二个参数的顺序在第一个参数前面的话,函数是会返回负值的;如果迭代器不在一个容器内,程序会抛出异常。

advance是将第一个参数向后移动第二个参数指定个元素。如果第二个参数为负,则向前移动;如果向前或向后移动超出容器范围,则抛出异常。

#include
#include
#include
using namespace std;
int main ()

 list mylist; 
 for (int i=0; i<10; i++)
  mylist.push_back (i*10.0); 

 list::iterator first = mylist.begin(); 
 list::iterator last = mylist.end(); 
 advance(first, 1);
 cout << "The distance is: " << distance(first,last) << endl; 
 return 0;
}


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐