lambda表达式和for_each,find_if
2024-09-06 05:40:11
1 lambda表达式可以允许我传递任意可调用对象,必须要有捕获列表和函数体,标准形式是[捕获列表] (参数列表)->return tpye{函数体}
谓词:一元谓词指的是只能接受一个传入参数,二元谓词指的是接受两个参数。
如果没有写返回类型[](){};这样有两种情况:1、函数体类只能有一个return语句,2、如果有多余两条语句,返回的就是void
有多条语句还想返回其他类型,必须用标准形式eg;[] (int i)->int{if (i>0) return i;else return -i;}
for_each()里面的第三个参数是一个函数,可以是lambda表达式。
#include<iostream>
#include<vector>
#include<algorithm> using namespace std;
int main() {
vector<int> vec(10,1);
transform(vec.begin(), vec.end(), vec.begin(), [](int i) { return ++i; });
for_each(vec.begin(), vec.end(), [](int i) {cout << i<<" "; });
cout << endl;
}
for each(int i in vec)//和上面一样的结果
cout << i << " ";
cout << endl;
find_if()可以接受一个谓词,lambda表达式,count_if也是,这是和find()以及count()的区别;
void count_ifTest() {
vector<string> vec{"we","happy","lovely"};
size_t countNum = count_if(vec.begin(), vec.end(), [](const string &s) {return s.size() > 4; });
//统计vec中有多少个字符串大小大于4的
cout << countNum << endl;
}
3STL算法学习-- for_each( ) 与 transform()
for_each() 对某区间无素执行某种操作.
void print( int &elem)
{
cout<<elem<<endl;
}
for_each(coll.begin(), coll.end(), print) ;
回为元素以引用方式传递,可以改变区间内的元素,.for_each()还可以返回传递进去的函数对像的副本。
transform() 对某区间无素执行某种操作.操作返回被改动后的元素 可以将操作的结果放到指定的区间
void fun( int elem)
{
retun elem*elem;
}
transform(coll.begin(), coll.end(), coll.begin(), fun);
最新文章
- Asp.net项目路径获取方法【转】
- UIButton 的属性与方法
- Laravel 流程分析——整体概论
- box2d 遍历世界中 body 的方法
- 【 java版坦克大战--事件处理】 键盘控制小球上下左右移动
- MINA学习之体系介绍
- LabVIEW设计模式系列——事件结构中值改变事件
- 【细说Java】Java变量初始化顺序
- UIWindow in iOS
- ViewTreeObserver简介
- 搭建Hadoop集群 (二)
- Linux教程:如何在Linux下进行C++开发?
- ajax 提交表单(文件)
- day10-(rr)
- Vue以CDN方式调用Swiper轮播异常
- odoo国际化翻译
- 使用 ssh -R 建立反向/远程TCP端口转发代理
- 了解HTTP协议栈(实践篇)
- C++ 随机数字以及随机数字加字母生成
- PS_Form个性化复杂需求新增Menu并调用Request(案例)
热门文章
- Springboot学习:介绍与HelloWorld
- ZOJ1004 Anagrams by Stack
- Spring Boot FreeMarker 使用教程
- Docker安装部署ELK教程(Elasticsearch+Kibana+Logstash+Filebeat)
- Update(Stage4):spark_rdd算子:第2节 RDD_action算子_分区_缓存:缓存、Checkpoint
- Update(Stage4):spark_rdd算子:第2节 RDD_action算子_分区_缓存:算子和分区
- 监控Tomcat状态!(重点)
- 07 DTFT
- KVM的客户机可以使用的存储
- vue配置、创建项目及运行