概述
c++中的 for_each 函数
for_each()事实上是個 function template,其源码如下:
template <class _InIt, class _Fn>
_CONSTEXPR20 _Fn for_each(_InIt _First, _InIt _Last, _Fn _Func) {
_Adl_verify_range(_First, _Last);
auto _UFirst
= _Get_unwrapped(_First);
const auto _ULast = _Get_unwrapped(_Last);
for (; _UFirst != _ULast; ++_UFirst) {
_Func(*_UFirst);
}
return _Func;
}
参数:
_First,_Last 要应用函数到的范围
_Func 函数对象,要应用于解引用范围 [first, last) 中每个迭代器结果的函数,函数签名应当等价于如下者:
void fun(const Type &a);
签名不必拥有 const & 。类型 Type 必须使得 InputIt 类型对象能在解引用后隐式转换到 Type 。
for_each() 是一个非常有用的函数,它有助于在 STL 容器中的每个元素上调用函数对象 _Func()。这实际上有助于编写简短的代码并减少我们代码库的大小。
以下是有效使用 for_each() 的示例:
#include <iostream>
#include <algorithm>
#include <vector>
int main()
{
std::vector<int> vec;
size_t count = 10;
for (size_t i = 0; i < count; i++)
{
vec.emplace_back(i + 1);
}
std::for_each(vec.begin(), vec.end(), [&](int value)
{ std::cout << value << std::endl; });
system("pause");
return 0;
}
遍历结果:
上面的例子采用lambda函数的方式接收std::for_each()返回的操作,除此之外,还可以采用仿函数、函数对象进行。
使用 for_each() 的好处是它减少了代码库的大小并使代码产品级别。此外,时间复杂度为 O(n)。如果有任何情况,其中每个元素都经过大型代码库的大量处理,您可以使用 for_each()。
最后
以上就是传统茉莉为你收集整理的c++中的 for_each 函数c++中的 for_each 函数的全部内容,希望文章能够帮你解决c++中的 for_each 函数c++中的 for_each 函数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复