大胖的部落格

Just a note

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  112 随笔 :: 0 文章 :: 3 评论 :: 0 Trackbacks
标准库定义了五种iterator:
          input        output
              \            /
                 forward
                     |
                bidirectional
                     |
               random access

InputIterator: 从容器中读,不能写,遍历一次。
OutputIterator: 向容器中写,不能读,遍历一次。
ForwardIterator: 单向遍历容器,可读写。
BldirectionalIterator: 双向遍历容器,可读写。      (list, map, set)
RandomAccessIterator: 支持双向遍历,并且可访问任意元素,可读写。   (vector,deque)

const_iterator
    const vector<int> v(5,5);                        //const vector
    vector<int>::const_iterator itc = v.begin();    //cosnt_iterator
    itc++;                                            //遍历
    
//*itc = 6;                                    //const_iterator指向的值不能改变


三种迭代器适配器:

插入迭代器
    vector<int> ves(6,8);
    vector
<int> ved;

    
//调用元素的赋值操作符
    unique_copy( ves.begin(), ves.end(), ved.begin() );            //error,ved没有分配空间
    unique_copy( ves.begin(), ves.end(), back_inserter(ved) );    //用push_back()替换赋值

    
//三种插入迭代器
    back_inserter(ved);                //push_back()
    front_inserter(ved);            //push_front()
    inserter(ved, ved.begin());        //insert()

反向迭代器
    vector<int> v(5,5);
    vector
<int>::reverse_iterator rit;        //反向迭代器
    rit = v.rbegin();                        //最后一个元素
    rit++;                                    //向前移

iostream迭代器
copy( istream_iterator< int >( cin ), istream_iterator< int >(), ostream_iterator< int >( cout ));



posted on 2009-06-22 11:31 大胖 阅读(181) 评论(0)  编辑 收藏 引用 所属分类: STL

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理