Lambada表达式的作用
Lambda函数的用处
- #include <string>
- #include <vector>
- class AddressBook
- {
- public:
- // using a template allows us to ignore the differences between functors, function pointers
- // and lambda
- template<typename Func>
- std::vector<std::string> findMatchingAddresses (Func func)
- {
- std::vector<std::string> results;
- for ( auto itr = _addresses.begin(), end = _addresses.end(); itr != end; ++itr )
- {
- // call the function passed into findMatchingAddresses and see if it matches
- if ( func( *itr ) )
- {
- results.push_back( *itr );
- }
- }
- return results;
- }
- private:
- std::vector<std::string> _addresses;
- };
从上面代码可以看到,findMatchingAddressses函数提供的参数是Func类型,这是一个泛型类型。在使用过程中应该传入一个函数,然后分别对地址簿中每一个entry执行这个函数,如果返回值为真那么表明这个entry符合使用者的筛选要求,那么就应该放入结果当中。那么这个Func类型的参数如何传入呢?
- AddressBook global_address_book;
- vector<string> findAddressesFromOrgs ()
- {
- return global_address_book.findMatchingAddresses(
- // we're declaring a lambda here; the [] signals the start
- [] (const string& addr) { return addr.find( ".org" ) != string::npos; }
- );
- }
可以看到,我们在调用函数的时候直接定义了一个lambda函数。参数类型是
- const string& addr
Lambada表达式的作用的更多相关文章
- 2.cocos2dx 3.2中语法的不同之处,lambada表达式的使用和function和bind函数的使用
1 打开建好的T32 Cocos2dx-3.2的一个项目 2 设置Cocos显示窗口的位置是在AppDelegate.cpp中: 3 设置自适应窗口大小的代码是在上面的 ...
- 一道js的前端面试题,主要弄清楚逗号表达式的作用
群里看到的一道前端JS面试题.我以为我会,其实我错了.找了很多资料,写下来. var i,j,k; for( i = 0 , j = 0; i < 10 , j < 6; i++ , j+ ...
- lambada 表达式
1.lambada的存在来由 匿名类的一个问题是,如果匿名类的实现非常简单,例如只包含一个方法的接口,那么匿名类的语法可能看起来不实用且不清楚.在这些情况下,您通常会尝试将功能作为参数传递给另一个方法 ...
- 阐述Lambada表达式
在C#2.0引入匿名方法之前,声明委托的唯一方法就是使用命名方法,C#2.0之后的C#3.0中开始引入了Lambda表达式取代了匿名方法. 匿名方法 要说Lambda必然离不开匿名方法,实际上,Lam ...
- C语言操作符/表达式及其作用总结
一.算术操作符:+ - * / % 1. 除了 %操作符之外,其他的 几个操作符可以作 用于整数和浮点数. 2. 对于"/"操作符如果两个操作数都为整数,执行整数除法.而只要有浮点 ...
- EL表达式的作用与限制条件
限制条件 只能访问域对象的数据 用法 访问基本数据类型 首先把数据保存在域对象中 pagecontext.setAttribute("name","eric") ...
- lambada表达式
在Java 8中stream().map(),您可以将对象映射为其他对象. List<String> collect = alpha.stream().map(String::toUppe ...
- 2.cocos2dx 3.2在语法的差异,lambada使用表达式和function和bind使用功能
1 打开 - 内置T32 Cocos2dx-3.2一个专案 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhb ...
- Java8新特性-Lambda表达式是什么?
目录 前言 匿名内部类 函数式接口 和 Lambda表达式语法 实现函数式接口并使用Lambda表达式: 所以Lambda表达式是什么? 实战应用 总结 前言 Java8新特性-Lambda表达式,好 ...
随机推荐
- 【jQuery】jQuery与Ajax的应用
1.demo1 <script language="javascript" type="text/javascript"> //通过这个函数来异步获 ...
- Kali-linux Arpspoof工具
Arpspoof是一个非常好的ARP欺骗的源代码程序.它的运行不会影响整个网络的通信,该工具通过替换传输中的数据从而达到对目标的欺骗.本节将介绍Arpspoof工具的 使用. 9.8.1 URL流量操 ...
- 关于ie8下监听input事件的不兼容问题。
关于在ie8下,监听输入框的值变化的input事件不支持的解决办法: 很懒...直接上原文地址.... 原文地址:http://www.cnblogs.com/lhb25/archive/2012/1 ...
- git add用法
git add命令是将工作区内容添加到暂存区.git commit 将暂存区内容添加到版本库. git add -A 提交所有变化 git add -u 提交被修改(modified)和被删除(d ...
- FCC Truncate a string 解决方法
三行搞定 function truncate(str, num) { ab = str.length >num?num>3?str.slice(0,num-3)+ "...&qu ...
- C#实体更新指定的字段
接口类: /// <summary> /// 更新指定字段 /// </summary> /// <param name="entity">实体 ...
- centos7添加新网卡实现双IP双网关
问题背景: 业务需要,针对业务需要不同地域的机构访问,所以需要在同一台机器上配置不同IP并配置不同网关,实现不用机构可以访问同一台服务器办理业务. 系统环境: centos linux7 网络环境: ...
- Tomcat 或JBOSS java.lang.ArrayIndexOutOfBoundsException: 8192原因及其解决方法
2018-04-02 09:24:55 org.apache.catalina.connector.CoyoteAdapter service 严重: An exception or error oc ...
- 在js中获取页面元素的属性值时,弱类型导致的诡异事件踩坑记录,
前几天写一个js的时候遇到一个非常诡异的事情,这个问题是这样的,我要获取一个页面的DOM元素的val值,判断这个值是否比某个变量大,这个需求原先数字最大也就是10,现在要改了,可能会更多,这个时候我发 ...
- web前端 pdf 版电子 好书籍
http://www1.w3cfuns.com/feres.php?do=picture&listtype=book