STL Containers & Iterators part1(Chapter 4 of Thinking in C++ Vol 2)

ExpandedBlockStart.gif code
 1  #include  < iostream >
 2  #include  < vector >
 3  #include  < iterator >
 4  using   namespace  std;
 5 
 6  template < class  Cont,  class  PtrMemFun >
 7  void  apply(Cont &  c, PtrMemFun f)
 8  {
 9      typename Cont::iterator it  =  c.begin();
10       while (it  !=  c.end())
11      {
12          (( * it). * f)();
13          it ++ ;
14      }
15  }
16 
17  class  Z
18  {
19       int  i;
20  public :
21      Z( int  ii) : i(ii) {}
22       void  g() { i ++ ; }
23      friend ostream &   operator << (ostream &  os,  const  Z &  z)
24      {
25           return  os  <<  z.i;
26      }
27  };
28 
29  int  main()
30  {
31      ostream_iterator < Z >   out (cout,  "   " );
32      vector < Z >  vz;
33       for ( int  i = 0 ; i < 10 ; i ++ )
34      {
35          vz.push_back(Z(i));
36      }
37      copy(vz.begin(), vz.end(),  out );
38      cout  <<  endl;
39      apply(vz,  & Z::g);
40      copy(vz.begin(), vz.end(),  out );
41      cin. get ();
42  }

 

转载于:https://www.cnblogs.com/zhtf2014/archive/2011/01/08/1930948.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值