迭代器的使用

来源:互联网 发布:软件销售 编辑:程序博客网 时间:2024/06/05 00:39

1、迭代器中STL中扮演着很重要的角色. STL的核心思想就是:将数据结构和算法分离。而迭代器就是作为数据结构和算法的粘合层而存在的。在STL中,每一个容器而有一个自己的迭代器, 而vector的迭代器就是一个普通的指针。所以在vector中实现迭代功能就非常的简单了。代码如下:

 

  1. vec::iterator iter = va.begin();  
  2. int i = 0;  
  3. while(iter != va.end()){  
  4.     printf("va[%d] = %d \n ",i,*iter);  
  5.     iter ++;  
  6.     i++;  

#include <vector>
#include <iostream>
using namespace std;

typedef vector<int> INTVEC;

//第一种方法的输出

/*void ShowVec(const INTVEC &v){
 unsigned int i=0;
 for (i=0;i<v.size();i++)
 {
  cout<<v[i]<<endl;
 }
}*/

//第二种方法的输出

/*void ShowVec(INTVEC &v){
INTVEC::iterator it;
 for (it=v.begin();it<v.end();++it)  //为了可移植性的作用 写成:it!=v.end()
 {
 cout<<*it<<endl;
 }
}
*/

//第三种方法的输出

void ShowVec(const INTVEC &v){
 INTVEC::const_iterator it;
 for (it=v.begin();it<v.end();++it)     //为了可移植性的作用 写成:it!=v.end()
 {
  cout<<*it<<endl;
 }
}
int main(){
 INTVEC v;
 v.push_back(1);
 v.push_back(2);
 v.push_back(3);
 ShowVec(v);

return 0;
}

注意:

 list<int> li;

--li.end();

li.end()-1;//error

链表不支持随机访问,配合迭代器使用时不支持+=,-,+,-=的操作,但支持--,++操作,因为他们是双向列表

 vector<int> vc;

vc.end()-1;

向量内部支持随机访问,配合迭代器使用时支持+=,-,+,-=的操作和支持--,++操作。

 

原创粉丝点击