迭代器 配接器

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,"\n"));  

      return 0;

}

  较好的用法:

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

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

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

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

  更好的用法:

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

3、Reverse iterators  逆向迭代器

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

 

posted @ 2013-07-03 22:21  极限游乐园  阅读(148)  评论(0编辑  收藏  举报