Definition
Sample
// class _InIt should be iterator or pointer of array // class _Fn1 is functor (function object), has overloaded operator() (*_InIt) template<class _InIt, class _Fn1> inline _Fn1 _For_each(_InIt _First, _InIt _Last, _Fn1 _Func) { for (; _First != _Last; ++_First) _Func(*_First); return (_Func); // Copy of _Func is returned }
Sample
template<typename Ty> class PrintFunc { size_t mNumLoop; public: PrintFunc() : mNumLoop(0) {}; void operator()(Ty arg) { ++mNumLoop; std::cout << arg << std::endl; } size_t GetNumberOfLoop() const { return mNumLoop; }; }; int main(); { std::array<double, 10> data; for( size_t i = 0; i < data.size(); ++i) { data[i] = i; } PrintFunc pf = std::for_each( data.begin(), data.end(), PrintFunc() ); std::cout << "Number of Loop is " << pf.GetNumberOfLoop() << std::endl; return 0; }
コメントをかく