zoukankan      html  css  js  c++  java
  • 迭代器 配接器

    1、Insert iterators  安插型迭代器

      可使算法以安插方式而非覆写方式运作。可以解决算法的“目标空间不足”的问题。

      安插型迭代器又有三类:

        I、Back inserters    安插于容器尾端

        内部调用push_back,在尾端插入元素。可用的容器有三种:vector、deque、list。back_inserter(container)

        II、Front inserters    安插与容器前端

        内部调用push_front,将元素安插于容器前端,这种动作逆转了被安插元素的次序。可用的容器deque和list。front_inserter(container)

        III、General inserters     一般性安插器

        作用是将元素插入“初始化时接受之第二参数”所指位置的前方。内部调用insert()成员函数,并以新值和新位置作为参数。所有容器都可以使用这种安插器。

        inserter(container,pos)。

    2、Stream iterators 流迭代器

       

    int  main(int argc, _TCHAR* argv[])

    {  

      std::vector<std::string> coll;

        std::copy(std::istream_iterator<std::string>(std::cin),std::istream_iterator<std::string>(),std::back_inserter(coll));  

          sort(coll.begin(),coll.end());    

          std::unique_copy(coll.begin(),coll.end(),std::ostream_iterator<std::string>(std::cout," "));  

          return 0;

    }

      较好的用法:

        copy(istream_iterator<int>(cin),istream_iterator<int>(),back_inserter(ivec)); 

        //下句为将ivec内容输出屏幕 

        copy(ivec.begin(),ivec.end(),ostream_iterator<int>(cout," ")); 

        ---------------------------------------------------------

      更好的用法:

        vector<int> ivec(istream_iterator<int>(cin),istream_iterator<int>());

    3、Reverse iterators  逆向迭代器

       容器的成员函数:rbegin()和rend()。

  • 相关阅读:
    记第一场cf比赛(Codeforces915)
    Uva11468:Substring
    Uva11732:"strcmp()" Anyone?
    Uva1014:Remember the Word
    洛谷P2502:[HAOI2006]旅行
    bzoj3677: [Apio2014]连珠线
    bzoj4906: [BeiJing2017]喷式水战改
    海上孤独的帆
    Treap基本用法总结
    noip2017考前基础复习——数论数学
  • 原文地址:https://www.cnblogs.com/lverson/p/3170571.html
Copyright © 2011-2022 走看看