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;
}

コメントをかく