C++迭代器 iterator

转载:http://www.cnblogs.com/yc_sunniwell/archive/2010/06/25/1764934.html

 

首先看一下那些容器不支持迭代器

 容器                 支持的迭代器类别            容器               支持的迭代器类别            容器                 支持的迭代器类别
vector              随机访问                         deque               随机访问                          list                      双向
set                   双向                               multiset               双向                              map                     双向
multimap          双向                                 stack                不支持                           queue                 不支持

(1) 每种容器类型都定义了自己的迭代器类型,如vector:

vector<int>::iterator iter;这条语句定义了一个名为iter的变量,它的数据类型是由vector<int>定义的iterator类型。

使用迭代器读取vector中的每一个元素:

for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();++iter)
{
        *iter=2; //使用 * 访问迭代器所指向的元素
}
for(vector<int>::const_iteratorciter=ivec.begin();citer!=ivec.end();citer++)
{
        cout<<*citer;
        //*citer=3; error
}

const_iterator:
只能读取容器中的元素,而不能修改。

 

一个很典型使用vector的STL程式:

#include <vector>
#include <iostream>

using namespace std;
 
int main() 
{
     vector<int> ivec;
      ivec.push_back(1);
     ivec.push_back(2);
     ivec.push_back(3);
     ivec.push_back(4);

     for(vector<int>::iterator iter = ivec.begin();1. iter != ivec.end(); ++iter)
     {
            cout << *iter << endl;
     }
}

 

posted @ 2017-06-29 20:36  ren_zhg1992  阅读(83)  评论(0)    收藏  举报