栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++中的 for

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++中的 for

c++中的 for_each 函数

for_each()事实上是個 function template,其源码如下:

template 
_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 
#include 
#include 

int main()
{
    std::vector 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()。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/997743.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号