一:for_each源码分析VS019
//一个函数模板
// FUNCTION TEMPLATE for_each
template <class _InIt, class _Fn>
_CONSTEXPR20 _Fn for_each(_InIt _First, _InIt _Last, _Fn _Func) { // perform function for each element [_First, _Last)
_Adl_verify_range(_First, _Last);
auto _UFirst = _Get_unwrapped(_First);
const auto _ULast = _Get_unwrapped(_Last);
for (; _UFirst != _ULast; ++_UFirst) {
_Func(*_UFirst); //这里相当于调用了
}
return _Func;
}
二:范例演示
#include <iostream>
#include <stdio.h>
#include <string>
#include <algorithm> // std::for_each
#include <vector> // std::vector
using namespace std;
void myfunction(int i)
{
cout << i << endl;
}
struct A
{
void operator() (int i)
{
cout << i << endl;
}
};
int main()
{
std::vector<int> myvector;
A obj;
myvector.push_back(10);
myvector.push_back(20);
myvector.push_back(30);
for_each(myvector.begin(), myvector.end(), myfunction);
for_each(myvector.begin(), myvector.end(), obj);
for_each(myvector.begin(), myvector.end(), [] (int val)
{
cout << val << endl;
});
return 1;
}