#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
template<typename T>
void printEle(T value)
{
cout << value << endl;
}
void test()
{
vector<int> v;
for (int i = 0; i < 10; i++)
{
v.push_back(i);
}
//第一种遍历方式
//使用for循环和迭代器遍历容器
//begin()返回的迭代器指向容器中的首元素
//end()返回的迭代器指向容器中尾元素的下一个位置
for (vector<int>::iterator iter = v.begin(); iter != v.end(); iter++)
{
cout << *iter << endl;
}
//第二种遍历方式
//需要包含头文件<algorithm>
//第三个参数需要传入函数名,即对容器中元素的操作方法
for_each(v.begin(), v.end(), printEle<int>);
}
int main()
{
test();
}
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;
}