Abstractfor_each()是STL中少數可以回傳值的algorithm,此範例在展示for_each()此特殊功能與function object可以留住state的特性。Introductionfunction object與global function的差別除了function object可以傳入參數外,還可以不使用static就可以留住state。一個簡單的需求,想要每印n個數字就換行,並且統計出所有iterator的和,所以function object必須能留住state才知道目前印了幾個數字,且統計sum為多少。Sample Code
執行結果
17行
_n為設定幾個字跳行_cnt統計目前已經印了幾個字_sum統計目前加總結果29行
若每印n個字,就加印換行35行
為了讓for_each()能傳回值,特別改寫operator int(),讓function object能夠傳回值。46行
這樣for_each()就能風風光光的每n個字就換行,還可以順便加總結果。ConclusionSTL真的很神奇,以上的程式想一行一行翻成C#還真的做不到呢!!
posted on 2009-12-21 23:46 Carlward 阅读(185) 评论(0) 编辑 收藏 引用 所属分类: STL
Powered by: C++博客 Copyright © Carlward