C++通过容器vector遍历数组两种方式

#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;
}
发布了113 篇原创文章 · 获赞 51 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_38883271/article/details/105225169