C++11/14 lamba, 仿函数 对比

C++11

C++14

话说新标准出来也蛮久的了, 是时候跟进了, 先试试lamba, 还满好玩。

先看看不用lamba, 用仿函数的代码如何:

class Acc // functor
{
public:
    Acc(int & Uppercase): Uppercase_(Uppercase){}
    void operator()(char c) const
    {
        if (isupper(c)){
            Uppercase_++;
        }
    }
private:
    int & Uppercase_;
};

void lamba_Test()
{
    char s[] = "Hello World!";
    int Uppercase = 0;
    for_each(s, s + sizeof(s), Acc(Uppercase)); // use functor
    cout << Uppercase << " uppercase letters in: " << s << endl;
}

再看看用lamba之后:

void lamba_Test() // lamba expersion
{
    char s[] = "Hello World!";
    int Uppercase = 0; //modified by the lambda
    for_each(s, s + sizeof(s),
        [&Uppercase](char c) { // or try auto c
        if (isupper(c))
            Uppercase++;}
    );

    cout << Uppercase << " uppercase letters in: " << s << endl;
}

打字少多了,看代码不用上窜下跳了,  爽爆了有木有!

时间: 2024-10-11 05:31:10

C++11/14 lamba, 仿函数 对比的相关文章

11.14 Daily Scrum

通过一天的努力,大家的任务基本已经完成,主界面的功能也日趋完善,后续的数据库处理和软件搜索等工作也已经开始陆续开展,到目前一共出现了三个问题急待解决,一是我们的燃尽图工作开展较晚,导致了大量已经展开的工作出现无法记录的情况,二是数据库开展的方面出现了不少的问题,由于我们才刚刚开始学习数据库的基本知识,有许多问题还没有得到解决,我们的方案是通过实例学习掌握数据库的基本技能.三是工作难题越来越多,工作量越来越大,有很多问题悬而不决,只有通过团队的合作意识的不断深入,分工的具体化的不断加深,这些问题就

算法导论之十(十一章散列表11.1-4大数组实现直接寻址方式的字典操作)

11.1-4题目: 我们希望在一个非常大的数组上,通过利用直接寻址的方式来实现一个字典.开始时,该数组中可能包含一些无用信息,但要对整个数组进行初始化是不太实际的,因为该数组的规模太大.请给出在大数组上实现直接寻址字典的方式.每个存储对象占用O(1)空间:SEARCH.INSEART.DELETE操作的时间均为O(1):并且对数据结构初始化的时间为O(1).(提示:可以利用一个附加数组,处理方式类似于栈,其大小等于实际存储在字典中的关键字数目,以帮助确定大数组中某个给定的项是否有效). 想法:

测试管理工具实践(小组作业)——11.14

今日工作进度情况: 李璋毅:查阅资料后撰写了Testlink工具的名称,优缺点和主要功能,发布博客: 储志峰:搭建安装Testlink之前所需要的环境:Webserver,PHP4,Mysql: 刘伟清:完成了VetrigoServ和Textlink的安装,并了解了Textlink的基本结构 翟瑆: 安装Testlink,并收集关于Testlink的使用方法: 陈汉:下载Vertrigoserv2.43以搭建环境,Testlink1.9.14的下载.安装与配置,使用Testlink创建测试用例:

11.14/11.15 Apache和PHP结合 11.16/11.17 Apache默认虚拟主机

11.14/11.15 Apache和PHP结合 编辑:httpd主配置文件/usr/local/apache2.4/conf/httpd.conf 去掉#号 将php7加# Telnet IP+80 端口不通,需要开启iptables防火墙 更改require 更改配置后需要操作才能生效 重新加载服务 增加一行php进行解析 页面显示 结果访问的是源代码 如果遇到php无法解析,需要检查相关的apache的配置文件 (1)检查apache的php 有没有加载php5 查看是否有libphp5.

《C++11/14高级编程Boost程序库探秘》之第1章全新的C++语言(三)学习记录

<C++11/14高级编程Boost程序库探秘>之第1章全新的C++语言(三)学习记录 1.7函数式编程 函数式编程是与面向过程编程.面向对象编程和泛型编程并列的一种编程范式,它基于λ演算理论,把计算过程视为数学函数的组合运算. 1.7.1 lambda表达式 基本形式为: [](params){...} []称为lambda表达式引出操作符,圆括号里是函数的参数,花括号内则是函数体,可以使用任何C++语句. lambda表达式的类型称为闭包,无法直接写出,所以通常需要使用auto的类型推导功

前端学习11.14

转载自:http://www.cnblogs.com/best/p/6096476.html#_lab2_2_0 1.新增加其它元素 1.1.meter 表示特定范围内的数值,可用于工资.数量.百分比等 max表示最大值,min表示最小值,value代表当前值. <meter max="100" min="0" value="60" style="width: 300px;"></meter> 可以试试

[Effective Modern C++(11&amp;14)]Chapter 3: Moving to Modern C++

1. Distinguish between () and {} when creating objects C++11中,初始化值的指定方式有三种:括号初始化,等号初始化和花括号初始化:其中花括号初始化是为了解决C++98的表达能力而引入的一种统一初始化思想的实例. 等号初始化和花括号初始化可以用于非静态成员变量的初始化 class Widget { ... private: int x {0}; // ok int y = 0; // ok int z(0); // error }; 括号初

【C++】11&amp;14新特性

Linux下编译: g++ main.cpp -std=c++11   g++ mian.cpp -std=c++14 弃用: 1.字符串字面值常量赋值和初始化,用 const char * 或 auto,弃用 char *. 原文地址:https://www.cnblogs.com/tomatokely/p/9383091.html

[2018/11/14] Java学习

在网上下载了一个用Java实现的数据结构的视频, 看了前三个视频, 感觉收获很大, 今天花了接近三小时在Java的数据结构上. 课程的目录如下: 第01讲:数组第02讲:简单排序第03讲:栈和队列第04讲:链表第05讲:双端链表和双向链表第06讲:递归的应用第07讲:递归的高级应用第08讲:希尔排序第09讲:快速排序第10讲:二叉树的基本概念第11讲:二叉树的基本操作第12讲:遍历二叉树第13讲:删除二叉树节点第14讲:红黑树第15讲:哈希表第16讲:开放地址法第17讲:链地址法第18讲:图的基