for_each()源码分析

// FUNCTION TEMPLATE for_each
template <class _InIt, class _Fn>
_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;
}

审计源码 不难发现 for_each() 通过 模板类 实现 需要三个参数
分别为: 起始位置,终止位置,操作函数
内部只是简单的历遍每个元素 并把每个元素交由 你提供的操作函数来处理

例子

#include
#include
#include
using namespace std;
vector<int> v;
void print(int t) {
	cout << t << " ";
}
int main() {
	v.push_back(10);
	v.push_back(20);
	v.push_back(30);
	v.push_back(40);
	for_each(v.begin(), v.end(), print);
	cout << "\n";
	return 0;
}

for_each()源码分析_第1张图片

你可能感兴趣的:(C/C++入坟)