(原創) 如何使用for_each() algorithm? (C/C++) (STL)

C++沒有提供foreach語法(C++/CLI增加了for each語法了),但提供了for_each() algorithm,BS曾說,為了C++語言本身的穩定,C++語言本身不太容易變動,所以若要變也是從Library下手,有了for_each() algorithm,其實也達到其他語言foreach的功能了。

for_each()和transform()有什麼差別呢?簡單的說,for_each()是唯讀的,而transform()是可修改的,for_each()不會理會funtion的傳回值,而transform()會將傳回值變成container的element,而達到修改的效果。

 1 ExpandedBlockStart.gif ContractedBlock.gif /**/ /* 
 2InBlock.gif(C) OOMusou 2006 http://oomusou.cnblogs.com
 3InBlock.gif
 4InBlock.gifFilename    : GenericAlgo_for_each.cpp
 5InBlock.gifCompiler    : Visual C++ 8.0 / ISO C++
 6InBlock.gifDescription : Demo how to use for_each algorithm.
 7InBlock.gifRelease     : 12/10/2006
 8ExpandedBlockEnd.gif*/

 9 None.gif
10 None.gif#include  < iostream >
11 None.gif#include  < vector >
12 None.gif#include  < algorithm >
13 None.gif
14 None.gif void  cOut( const   int & );
15 None.gif
16 ExpandedBlockStart.gifContractedBlock.gif int  main()  dot.gif {
17InBlock.gif  std::vector<int> ivec(3,1);
18InBlock.gif
19InBlock.gif  for_each(ivec.begin(), ivec.end(), cOut);
20InBlock.gif
21InBlock.gif  return 0;
22ExpandedBlockEnd.gif}

23 None.gif
24 ExpandedBlockStart.gifContractedBlock.gif void  cOut( const   int   & i)  dot.gif {
25InBlock.gif  std::cout << i << std::endl;
26ExpandedBlockEnd.gif}


執行結果

1 None.gif 1
2 None.gif 1
3 None.gif 1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值