STL_算法_for_each_寻找星空的孩子的博客-程序员宅基地

技术标签: 程序员面试金典  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

智能推荐

tensorflow获取GPU设备_tensorflow gpu编号-程序员宅基地

tensorflow获取GPU设备转自:http://blog.csdn.net/weixin_35653315/article/details/71403386主要内容:使用tensorflow查询机器上是否存在可用的gpu设备使用tensorflow获取可用的gpu设备编号tensorflow对GPU设备的编码使用tensorflow查询机器上是否存在可用的gp_tensorflow gpu编号

gaussdb 数据库用户和安全管理【用SSL进行安全的TCP/IP连接】【04】_gaussdb 关闭ssl-程序员宅基地

1. 用SSL进行安全的TCP/IP连接GaussDB支持通过SSL加密客户端和服务器之间、主机和备机之间的通讯,为敏感数据在Internet上的传输提供了一种安全保障手段。背景信息GaussDB支持SSL 3.0协议标准,SSL 3.0协议是一种安全性更高的协议标准,它加入了数字签名和数字证书来实现客户端和服务器的双向身份验证,保证了通信双方更加安全的数据传输。如果只是为了测试,可以使用Openssl生成证书。SSL相关的参数既控制客户端和主机的SSL通讯,同时还控制着主机和备机之间的SSL通_gaussdb 关闭ssl

python猴子吃桃子的问题_张含韵忍不住一吃再吃的这种湖南美食,你可能买到假货...-程序员宅基地

来源| 潇湘晨报1987年大年初一,《西游记》作为大ip改编的成功典型,央视把整个剧组请来办了《齐天乐》晚会。发量惊人的六小龄童表演猴子吃桃,哪怕连个道具也没有,依然能感受那是一颗汁水丰足的桃子。一年前,在仅播出11集的《西游记》中,孙悟空吃蟠桃的经典情节加重了电视前每个小孩唾液腺的kpi。当时,人们对于桃子的认知半径还停留在,体圆肉白的鲜果。其实,真正的蟠桃是扁圆形的,甘美且少汁。电..._python桃子价格

mybatis学习笔记(六)_ognl表达式 mybatis-程序员宅基地

动态SQL通常使用动态SQL不可能是独立的一部分,MyBatis当然使用一种强大的动态SQL语言来改进这种情形,这种语言可以被用在任意映射的SQL语句中。MyBatis采用功能强大的基于OGNL的表达式来消除其他元素。 if choose(when,otherwise) trim(where,set) foreachif在动态SQL中所做的最通用的事情是包含部分wh_ognl表达式 mybatis

Flutter高效开发之本地资源图片的引用_flutter 引用本地图片-程序员宅基地

在继续上一篇原创 Flutter高效开发之封装Text后,我们再次封装了本地资源文件的引用操作。class MImage { static String getImgPath(String imgPath) { return 'libres/images/$imgPath'; } static Image assetImage(String imgPath, double width, double height, {BoxFit fit = BoxFit.scaleDo_flutter 引用本地图片

写入多线程Log4net 多线程写入-程序员宅基地

文章结束给大家来个程序员笑话:[M] 问题描述: 系统经常出现log无缘无故的丧失,每次系统出问题时去查log时发明log没有,愁闷了许久。 今天搞了将近一天,终于搞定。 处理步骤: 写了个控制台程序,在while(true)里头调用log,编译后同享文件夹。本机运行程序,log有信息。在另一台机器运行程序,log没有,提示log文件被其他...

随便推点

计算机右键属性高级系统设置,右键计算机->属性->高级系统设置->高级->环境变量,添加环境变量(推荐)...-程序员宅基地

Office2013插件开发Outlook篇(1)-- 第一个office2013插件一.环境: 下载VS2013安装,记得安装office插件开发包哦. 二.新建Outlook插件项目MongoDB学习笔记一:入门文档:多个键及其关联的值『有序』地放置在一起. {"greeting" : "Hello, world!", "foo" : 3}集合:一组 ...Easyui 关闭弹出框后还显示验证..._然后是配置环境变量: 右键计算机属性高级系统设置 环境变量一系统变量 新建 变量:

[转] 用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践-程序员宅基地

转自知乎上看到的一篇很棒的文章:用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践近来在同时做一个应用深度学习解决淘宝商品的类目预测问题的项目,恰好硕士毕业时论文题目便是文本分类问题,趁此机会总结下文本分类领域特别是应用深度学习解决文本分类的相关的思路、做法和部分实践的经验。业务问题描述:淘宝商品的一个典型的例子见下图,图中商品的标题是“夏...

三角剖分后,三角形数量和边的数量的计算_三角剖分数量_凌晨出没的东熊的博客-程序员宅基地

第一种情况假如在一个三角形内部进行三角剖分,剖分后的结果满足极大平面图的定义,易得边的数量e=3n-6,三角形数量f=2n-5。第二种情况将图中的CH(P)区域看作一个面的话,CH(P)的次数(边的数量)H不为3,导致剖分结果不满足极大平面图的定义,所以要额外增加H-3条边(每当连接相邻两个顶点时,总的边数增加一条,CH(P)的次数减少一次,所以要想把CH(P)的次数降低到3,就需要额外增加H-3条边),转化成极大平面图,然后就可以参照第一种情况了。(程序员基础向,抛砖引玉._三角剖分数量

官方正式公示:“西京大学”来了!_Amusi(CVer)的博客-程序员宅基地

点击上方“CVer”,选择加"星标"置顶重磅干货,第一时间送达1月15日,陕西省拟申报设置高等学校基本情况公示,根据公示,西京学院拟更名为西京大学。如果更名成功,东京大学..._西京学院最新消息

js-DOM-程序员宅基地

DOMDOM是JS操作网页的接口,全称为“文档对象模型”(Document Object Model)1 节点DOM的最小组成单位叫做节点文档节点(document):整个HTML文档document对象作为window对象的属性存在的,我们不用获取可以直接使用。元素节点(Element):HTML文档中的HTML标签。属性节点(Attribute):元素的属性 表示的是标签中的一个一个的属性文本节点(Text):HTML标签中的文本内容。DocumentTypedoctype:标签(比如