?
扩展阅读
  • java命名空间javax.xml.crypto.dom类domcryptocontext的类成员方法: iterator定义及介绍
  • java命名空间java.util.concurrent类concurrentlinkedqueue的类成员方法: iterator定义及介绍
  • java命名空间java.util.concurrent类delayqueue的类成员方法: iterator定义及介绍
  • java命名空间java.util.concurrent类copyonwritearraylist的类成员方法: iterator定义及介绍
  • java命名空间java.util.concurrent类copyonwritearrayset的类成员方法: iterator定义及介绍
  • java命名空间java.util.concurrent类linkedblockingdeque的类成员方法: iterator定义及介绍
  • java命名空间java.util类abstractlist的类成员方法: iterator定义及介绍
  • java命名空间java.util接口iterator的类成员方法: next定义及介绍
  • java命名空间javax.swing.text.html类htmldocument.iterator的类成员方法: gettag定义及介绍
  • java命名空间javax.swing.text.html类htmldocument.iterator的类成员方法: next定义及介绍
  • java命名空间java.util接口iterator的类成员方法: hasnext定义及介绍
  • java命名空间javax.swing.text.html类htmldocument.iterator的类成员方法: getendoffset定义及介绍
  • java命名空间javax.swing.text.html类htmldocument.iterator的类成员方法: getstartoffset定义及介绍
  • java命名空间javax.swing.text.html类htmldocument.iterator的类成员方法: isvalid定义及介绍
  • java命名空间java.util接口iterator的类成员方法: remove定义及介绍
  • java命名空间java.util类serviceloader的类成员方法: iterator定义及介绍
  • ?
    当前位置:??编程语言>c/c++

    C++ Iterator迭代器介绍及Iterator迭代器用法代码举例

    ?
    分享到:
    ????发布时间:2014-10-14??


    ????本文导语:? C++ Iterator迭代器介绍 迭代器可被用来访问一个容器类的所包函的全部元素,其行为像一个指针。举一个例子,你可用一个迭代器来实现对vector容器中所含元素的遍历。有这么几种迭代器如下:迭代器 描述...

    ? ?c++ iterator迭代器介绍

    ?? ?迭代器可被用来访问一个容器的所包函的全部元素,其行为像一个指针。举一个例子,你可用一个迭代器来实现对vector容器中所含元素的遍历。有这么几种迭代器如下:

    迭代器 描述?

    input_iterator 提供读功能的向前移动迭代器,它们可被进行增加(++),比较与解引用(*)。

    output_iterator 提供写功能的向前移动迭代器,它们可被进行增加(++),比较与解引用(*)。

    forward_iterator?可向前移动的,同时具有读写功能的迭代器。同时具有input和output迭代器的功能,并可对迭代器的值进行储存

    bidirectional_iterator 双向迭代器,同时提供读写功能,同forward迭代器,但可用来进行增加(++)或减少(--)操作。

    random_iterator?随机迭代器,提供随机读写功能.是功能最强大的迭代器, 具有双向迭代器的全部功能,同时实现指针般的算术与比较运算。

    reverse_iterator ?如同随机迭代器或双向迭代器,但其移动是反向的。(Either a random iterator or a bidirectional iterator that moves in reverse direction.)

    ? ? vector容器类就有一个random-access随机迭代器,这也意味着其可以使用随机读写的算法。既然随机迭代器具有全部其它迭代器的特性,这也就是说为其它迭代器设计的算法也可被用在vector容器上。


    ? ?C++ Iterator迭代器操作举例

    ?(www.169it.com)

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

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

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

    vector?ivec(10,1);
    for(vector::iterator?iter=ivec.begin();iter!=ivec.end();++iter)
    {
    *iter=2;?//使用?*?访问迭代器所指向的元素
    }
    const_iterator:

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

    for(vector::const_iterator?citer=ivec.begin();citer!=ivec.end();citer++)
    {
    cout<<*citer;
    //*citer=3;?error
    }
    vector::const_iterator?和?const?vector::iterator的区别
    const?vector::iterator?newiter=ivec.begin();
    *newiter=11;?//可以修改指向容器的元素
    //newiter++;?//迭代器本身不能被修改

    (3) iterator的算术操作:

    iterator除了进行++,--操作,可以将iter+n,iter-n赋给一个新的iteraor对象。还可以使用一个iterator减去另外一个iterator.

    const?vector::iterator?newiter=ivec.begin();
    vector::iterator?newiter2=ivec.end();
    cout<<"n"<<>

    ?一个很典型使用vector的STL代码:

    #include?
    ?#include??
    ?using?namespace?std;?
    ?int?main()?
    {
    ?vector?ivec;
    ?ivec.push_back(1);
    ?ivec.push_back(2);
    ?ivec.push_back(3);
    ?ivec.push_back(4);?
    ?for(vector::iterator?iter?=?ivec.begin();1.?iter?!=?ivec.end();?++iter)
    ?cout?<

    如下代码对vector容器对象生成和使用了迭代器:

    vector?the_vector;
    ??vector::iterator?the_iterator;
    ??for(?int?i=0;?i?

    提示:通过对一个迭代器的解引用操作(*),可以访问到容器所包含的元素。


    • 本站(WWW.169IT.COM)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
      本站(WWW.169IT.COM)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
      转载请注明:文章转载自:[169IT-IT技术资讯]
      本文标题:C++ Iterator迭代器介绍及Iterator迭代器用法代码举例
    相关文章推荐:


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ?2012-2019,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

    浙ICP备11055608号