C++11之lambda表达式应用
应用
foreach语句中
#include <time.h>
#include <algorithm>
using namespace std; void func(int i)
{
cout<<i<<endl;
} int main(int argc, char *argv[])
{
list<int> li;
srand(time(NULL));
for(int i=0;i <10; i++)
{
li.push_back(rand()%100);
}
for_each(li.begin(),li.end(),func);
for_each(li.begin(),li.end(),[](int i){cout<<i<<endl;});
//!传函数指针的地方可以用lanbda表达式替代。
return 0;
}
sort()/list::sort()
#include <iostream>
#include <vector>
#include <list>
#include <stdlib.h>
#include <time.h>
#include <algorithm>
#include <functional>
using namespace std;
bool Compare(int i, int j)
{
return i<j;
} int main(int argc, char *argv[])
{
vector<int> vi;
srand(time(NULL));
for(int i=;i <; i++)
{
vi.push_back(rand()%);
}
// sort(vi.begin(),vi.end(),Compare);
sort(vi.begin(),vi.end(),[](int x, int y){ return x<y;}); for_each(vi.begin(),vi.end(),[](int i){cout<<i<<endl;});
return ;
Qt中信号槽机制

#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
this->setGeometry(,,,);
_dial = new QDial(this);
_dial->setRange(,);
_dial->setGeometry(,,,);
_dial->setAutoFillBackground(true);
_pBar = new QProgressBar(this);
_pBar->setGeometry(,,,);
_pBar->setMinimum();
_pBar->setMaximum();
_pBar->setOrientation(Qt::Vertical);
//connect(_dial,SIGNAL(valueChanged(int)),
_pBar,SLOT(setValue(int)));
//QObject::connect(const QObject *sender,PointerToMemberFunction signal,Functor functor)
connect(_dial,&QDial::valueChanged,[&](int v){_pBar->setValue(v);});
//!可以使用lambda表达式替代槽函数
}
MainWindow::~MainWindow()
{ }
lambda表达式与仿函数
#include <iostream>
using namespace std;
class Tax
{
public:
Tax(float r, float b):_rate(r),_base(b){}
float operator()(float money)
{
return (money-_base)*_rate;
}
private:
float _rate;
float _base;
}; int main(int argc, char *argv[])
{
// Tax high(0.40,30000);
// Tax middle(0.25,20000);
// Tax low(0.12,10000);
// cout<<"大于 3w 的税:"<<high(37500)<<endl;
// cout<<"大于 2w 的税:"<<middle(27500)<<endl;
float rate = 0.40;
float base = ;
auto high = [&](float money){return (money-base)*rate;};
cout<<"大于 3w 的税:"<<high()<<endl;
return ;
}
C++11之lambda表达式应用的更多相关文章
- 「C++11」Lambda 表达式
维基百科上面对于 lambda 的引入是如下描述的: 在标准 C++,特别是当使用 C++ 标准程序库算法函数诸如 sort 和 find.用户经常希望能够在算法函数调用的附近定义一个临时的述部函数( ...
- C++11之lambda表达式
lambda表达式源于函数式编程的概念,它可以就地匿名定义目标函数或函数对象,不需要额外写一个命名函数或者函数对象.lambda表达式的类型在C++11中被称为"闭包类型",也可以 ...
- C++11 里lambda表达式的学习
最近看到很多关于C++11的文档,有些是我不怎么用到,所以就略过去了,但是lambda表达式还是比较常用的,其实最开始学习python的时候就觉得lambda这个比较高级,为什么C++这么弱.果然C+ ...
- 【C++11】 lambda表达式
i.e.int x = 10;int y = 20;int z = [&]{ x = x * x; y = y * y; return x + y;}(); 上面z后面以[]开头的为一个lam ...
- C++11之lambda表达式解析
什么是Lanmbda? 简短函数,就地书写.常用于向函数(算法)传递函数参数. 语法 Lambda 表达式,[capture](paras)mutable->return type{statem ...
- c++11:lambda表达式的使用
lambda表达式的一般形式: [capture list] (parameter list) -> return type{function body}; 其中,capture list (捕 ...
- STL - C++ 11的Lambda表达式(上)
Lambda始自C++ 11,是一种在表达式或语句内指定函数行为的定义式. 你可以定义函数行为作为对象,以inline实参的形式传给算法作为predicate(判断式). eg: std:transf ...
- STL - C++ 11的Lambda表达式(下)
关于lambda的基础知识,请参考上一篇的地址如下: http://www.cnblogs.com/davidgu/p/4825625.html 我们再举个STL使用Lambda来进行排序的例子,如下 ...
- C++11 lambda 表达式
C++11 新增了很多特性,lambda 表达式是其中之一,如果你想了解的 C++11 完整特性,建议去这里,这里,这里,还有这里看看.本文作为 5 月的最后一篇博客,将介绍 C++11 的 lamb ...
随机推荐
- 偏函数应用 pfa
- 洛谷 4568 [JLOI2011] 飞行路线
题目戳这里 一句话题意: 有n个点,m条边的有向图,最多可以把k条边变为0,求从起点到终点最短距离. Solution 首先看到这题目,感觉贼难,看起来像DP,貌似也有大佬这么做,但鉴于本蒟蒻思维能力 ...
- 【转】web性能测试基本性能指标
Web性能测试的部分概况一般来说,一个Web请求的处理包括以下步骤: (1)客户发送请求 (2)web server 接受到请求,进行处理: (3)web server 向DB获取数据: (4)web ...
- CentOS7的yum安装mysql
CentOS7的yum源中默认好像是没有mysql的.为了解决这个问题,我们要先下载mysql的repo源. 1. 下载mysql的repo源 $ wget http://repo.mysql.com ...
- DOM的介绍
一 . DOM 介绍 什么是DOM DOM:文档对象模型.DOM 为文档提供了结构化表示,并定义了如何通过脚本来访问文档结构.目的其实就是为了能让js操作html元素而制定的一个规范. DOM就是由节 ...
- nginx高可用配置
可参考资料: http://www.cnblogs.com/holbrook/archive/2012/10/25/2738475.html http://blog.csdn.net/e4210834 ...
- poj 1146 ID Codes (字符串处理 生成排列组合 生成当前串的下一个字典序排列 【*模板】 )
ID Codes Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6229 Accepted: 3737 Descript ...
- 时间序列数据库——索引用ES、聚合分析时加载数据用什么?docvalues的列存储貌似更优优势一些
加载 如何利用索引和主存储,是一种两难的选择. 选择不使用索引,只使用主存储:除非查询的字段就是主存储的排序字段,否则就需要顺序扫描整个主存储. 选择使用索引,然后用找到的row id去主存储加载数据 ...
- python-多线程1
程序\进程\线程的关系: 程序(program) 一组功能集合的静态描述,程序至少有一个进程 进程(process) 进程是系统进行资源分配和调度的,他们拥有自己独立的空间,进程至少有一个线程 线程( ...
- not in和not exist的区别(转)
in和exists in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询.一直以来认为exists比in效率高的说法是不准确的. 如果查询的两个 ...