STL_算法_for_each_stl foreach 求平均-程序员宅基地

技术标签: 程序员面试金典  c++ prime  STL_算法  for_each  STL  

C++ Primer 学习中。。。

 

简单记录下我的学习过程 (代码为主)


所有容器适用


for_each(b,e,p)


1、使用for_each()算法遍历数据
2、使用for_each()和函数对象修改数据
3、使用for_each()的返回值

#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
/*****************************************
//所有容器适用
for_each(b,e,p)
使用for_each()算法遍历数据
使用for_each()和函数对象修改数据
使用for_each()的返回值
*****************************************/

/*************************************************************************************
std::for_each                   所有排序容器适用                           algorithm
--------------------------------------------------------------------------------------
template <class InputIterator, class Function>
   Function for_each (InputIterator first, InputIterator last, Function f);

//eg:
template<class InputIterator, class Function>
  Function for_each(InputIterator first, InputIterator last, Function f)
  {
    for ( ; first!=last; ++first ) f(*first);
    return f;
  }
*************************************************************************************/
void myfunction (int i)
{
    cout << " " << i;
}
struct myclass
{
    void operator() (int i)
    {
        cout << " " << i;
    }
} myobject;

class MeanVlaue
{
public:
    MeanVlaue():num(0),sum(0){}
    void operator() (int elem)
    {
        num++;
        sum+=elem;
    }
    double value()
    {
        return static_cast<double>(sum)/static_cast<double>(num);
    }
    operator double()//重载的好处,简洁!
    {
        return static_cast<double>(sum)/static_cast<double>(num);
    }
private:
    long num;
    long sum;
};

template<class T>
class AddValue
{
public:
    AddValue(const T& v):theValue(v){}
    void operator() (T& elem)const
    {
        elem+=theValue;
    }
private:
    T theValue;
};

int main()
{
    vector<int> myvector;
    myvector.push_back(10);
    myvector.push_back(20);
    myvector.push_back(30);

    cout << "myvector contains:";
    for_each (myvector.begin(), myvector.end(), myfunction);

    // or:
    cout << "\nmyvector contains:";
    for_each (myvector.begin(), myvector.end(), myobject);

    cout << endl;

    MeanVlaue mv=for_each(myvector.begin(),myvector.end(),MeanVlaue());
    cout<<"平均值:"<<mv.value()<<endl;

    for_each(myvector.begin(), myvector.end(), AddValue<int>(10));//参数可以自己改,eg:*(myvector.begin())
    for_each (myvector.begin(), myvector.end(), myobject);
    cout << endl;

    double mv2=for_each(myvector.begin(),myvector.end(),MeanVlaue());
    cout<<"平均值:"<<mv2<<endl;

    return 0;
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u010579068/article/details/50511052

智能推荐

python的开发环境_python开发环境-程序员宅基地

文章浏览阅读9.9k次。这里,我还为大家介绍一个python利器——Anaconda。Anaconda 是一个用于科学计算的Python 发行版,支持Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的Python 包。安装了Anaconda,就拥有了任意版本的python和各种包了。使用Anaconda,在同一个系统上维护不同的项目环境也很方便。这里我推荐大家去清华大学开源软件镜像站下载。_python开发环境

使用JDBC和Java GUI实现纯代码设计学生成绩管理系统(包含代码)_学生成绩管理系统jdbc-程序员宅基地

文章浏览阅读1.6k次,点赞6次,收藏51次。一、设计内容使用JDBC和Java GUI实现学生成绩管理二、设计要求1.用户登录:实现一个登录功能,要求用户输入用户名和密码进行验证,并提供合适的反馈信息。2.学生信息管理:实现对学生信息的增加、修改、删除和查询功能。包括学生的姓名、学号、年龄、性别等信息。3.数据库连接与操作:使用JDBC连接数据库,并实现对数据库的增、删、改、查等操作。4.错误处理与异常处理:对用户输入的错误进行适当的处理,并进行异常处理,保证程序的稳定性和安全性。_学生成绩管理系统jdbc

memory_profiler 示例_python memory_profiler使用-程序员宅基地

文章浏览阅读296次。假设我们有一个计算斐波那契数列的函数,我们想要测试它在计算前20个斐波那契数列时的内存使用情况。脚本并打印每行代码执行后的内存使用情况。通过输出结果,我们可以找到哪些代码行使用了最多的内存并进行优化。是Python的内存分析工具,它可以帮助识别代码中的内存瓶颈,并辅助进行优化。装饰器来指示Python解释器在执行函数时进行内存分析。接下来,我们可以使用。_python memory_profiler使用

如何在编程中连接台式电脑和手机热点_pc连接网络热点python-程序员宅基地

文章浏览阅读62次。手机热点是一种通过移动网络提供无线网络连接的功能,我们可以将台式电脑连接到手机热点上,通过手机的移动网络访问互联网。在编程过程中,有时候我们需要将台式电脑连接到手机的热点上,以便于进行网络访问或者进行移动网络测试等操作。需要注意的是,不同的操作系统可能有不同的命令和方法来连接手机热点。以上示例代码适用于Windows系统,如果你使用的是其他操作系统,请根据具体情况进行相应的调整。在连接成功后,你可以执行任意的网络操作,例如使用requests库发送HTTP请求。替换为你手机热点的名称和密码。_pc连接网络热点python

第八章 实验案例一 安装Ubuntu操作系统(1),2024年最新Linux运维开发框架-程序员宅基地

文章浏览阅读816次,点赞8次,收藏15次。本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论。**新建一台虚拟机,规划使用的硬盘空间为60GB,分配的内存空间为1GB。

Elasticsearch:使用 ELSER 释放语义搜索的力量:Elastic Learned Sparse EncoderR-程序员宅基地

文章浏览阅读1.8k次。在信息过载的时代,根据上下文含义和用户意图而不是精确的关键字匹配来查找相关搜索结果已成为一项重大挑战。传统的搜索引擎通常无法理解用户查询的语义上下文,从而导致相关性较低的结果。_elser

随便推点

mfc 从内存中加载html,MFC 显示本地HTML文件-程序员宅基地

文章浏览阅读450次。1.添加一个HTML文件,ID为:IDR_HTML1,里面内容自行添加。2.添加WebBrowser控件,为其添加成员变量m_1;3.StdAfx.h头文件中添加#include "webbrowser2.h"4.OnInitDialog()中添加:COleVariant vtEmpty;vtEmpty.vt=VT_EMPTY;HMODULE hMod=GetModuleHandle(NULL);..._mfc添加html为内部资源

Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on p-程序员宅基地

文章浏览阅读4.6k次。_failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:depl

Nao机器人的基本操作与控制_nao机器人使用教程-程序员宅基地

文章浏览阅读9.2k次,点赞8次,收藏60次。按nao胸前的按钮一下会让nao报出他现在的IP地址按两下会切换nao的模式(休息模式和自主模式,休息模式为坐下休息,自主模式为站立)_nao机器人使用教程

调用钉钉官方api报错Do not support the current environment:‘notInDingTalk‘_do not support the current environment:'notindingt-程序员宅基地

文章浏览阅读648次,点赞6次,收藏5次。按照官网文档说明,通过dd.getAuthCode这个接口可以拿去到authCode请求后端,返回用户信息;如果没有选项的话,需要自己在钉钉开放平台进行配置的,不需要企业注册,申请自己的企业照着提示流程走就可以.如果开发的是钉钉小程序,那么在开发者工具中点击预览后应该是出现钉钉二维码,但是我的打开是支付宝的二维码。但是执行了这段代码后控制台就会报notInDingTalk的错,把上面的应用都换成带有钉钉图标的就可以了。_do not support the current environment:'notindingtalk

Linux查看某一时间段的命令_tail 时间-程序员宅基地

文章浏览阅读2.1k次,点赞2次,收藏6次。今天我想在十几个G的日志文件中查看某个时间的日志,使用:tail -n 日志文件名滑动鼠标,想找到那一时间的日志,结果页面条数受限然后,查到了可以查看某一时间段的日志的操作命令,如下:sed -n '/2020-09-24 11:16:00/,/2020-09-24 11:20:00/p' log.out注意:首先,斜杠后面的p是不能丢掉的;上面命令左边是开始时间,右边是结束时间,这个时间如果在日志里面不存在,就查不出东西来可以使用模糊查询举例://按分钟模糊sed -n '/2_tail 时间

使用yolov5模型实现佩戴口罩的检测_yolo5口罩识别-程序员宅基地

文章浏览阅读1.6k次,点赞12次,收藏36次。yolo是一个one-stage单阶段的网络,他的精度虽然没有two-strage(Faster-rcnn,Mark-rcnn)两阶段的精度高,但是他最核心的优势是检测速度十分快,目前yolo系列从v3到v8,如果想了解更详细点的同学可以去网上查阅资料。yolov5网络结构主要可以分为以下三个部分,在backbone中先使用卷积进行特征的提取或代替maxpooling;在neck中使用了SPPF结构,改变了SPP原来的分开卷积操作变为进行连续卷积,在保证内容相同的同时,提高了模型的运行速度;_yolo5口罩识别

推荐文章

热门文章

相关标签