应用

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表达式应用的更多相关文章

  1. 「C++11」Lambda 表达式

    维基百科上面对于 lambda 的引入是如下描述的: 在标准 C++,特别是当使用 C++ 标准程序库算法函数诸如 sort 和 find.用户经常希望能够在算法函数调用的附近定义一个临时的述部函数( ...

  2. C++11之lambda表达式

    lambda表达式源于函数式编程的概念,它可以就地匿名定义目标函数或函数对象,不需要额外写一个命名函数或者函数对象.lambda表达式的类型在C++11中被称为"闭包类型",也可以 ...

  3. C++11 里lambda表达式的学习

    最近看到很多关于C++11的文档,有些是我不怎么用到,所以就略过去了,但是lambda表达式还是比较常用的,其实最开始学习python的时候就觉得lambda这个比较高级,为什么C++这么弱.果然C+ ...

  4. 【C++11】 lambda表达式

    i.e.int x = 10;int y = 20;int z = [&]{ x = x * x; y = y * y; return x + y;}(); 上面z后面以[]开头的为一个lam ...

  5. C++11之lambda表达式解析

    什么是Lanmbda? 简短函数,就地书写.常用于向函数(算法)传递函数参数. 语法 Lambda 表达式,[capture](paras)mutable->return type{statem ...

  6. c++11:lambda表达式的使用

    lambda表达式的一般形式: [capture list] (parameter list) -> return type{function body}; 其中,capture list (捕 ...

  7. STL - C++ 11的Lambda表达式(上)

    Lambda始自C++ 11,是一种在表达式或语句内指定函数行为的定义式. 你可以定义函数行为作为对象,以inline实参的形式传给算法作为predicate(判断式). eg: std:transf ...

  8. STL - C++ 11的Lambda表达式(下)

    关于lambda的基础知识,请参考上一篇的地址如下: http://www.cnblogs.com/davidgu/p/4825625.html 我们再举个STL使用Lambda来进行排序的例子,如下 ...

  9. C++11 lambda 表达式

    C++11 新增了很多特性,lambda 表达式是其中之一,如果你想了解的 C++11 完整特性,建议去这里,这里,这里,还有这里看看.本文作为 5 月的最后一篇博客,将介绍 C++11 的 lamb ...

随机推荐

  1. 一起来学linux:进程

    简单来说,每当执行一个程序或者命令,启动事件的时候都会得到一个PID,也就是进程ID.比如用户登陆的时候就会得到一个PID.如下所示.两个用户zhf和root在登陆后分别获得PID 3212和3214 ...

  2. mac下编译FFmpeg-Android

    参考: [史上最傻瓜的]mac下编译FFmpeg-Android http://blog.csdn.net/ashqal/article/details/9381037

  3. 爬虫前戏(回顾掌握) -- HTTP和HTTPS

    一.HTTP协议 1.官方概念: HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文 ...

  4. iOS define 宏定义 和 const定义常量区别

    const   const 是c++中的修饰符.  c++中常用来定义常量,修饰左值. #define 宏定义语句, 在预处理阶段直接做文本替换,不做类型检查. 它们之间的最大区别: 1.  对于co ...

  5. png24 png8 jpeg与gif

    png24无损压缩,支持透明,有8位布尔透明通道,支持半透明,生成的图片品质最高,也最大 png8支持透明,有1位布尔透明通道,要么透明.要么半透明,生成的图片很小,只支持256色 jpeg有损压缩, ...

  6. 自定义编辑框VC,可加载更改字体,添加背景图片,显示输入提示信息

    搞了一天终于弄了个完整的编辑框控件出来了, 哎,,,搞界面开发还是有点复杂的. #pragma once #include "AdvEdit.h" // CBkgEditBox c ...

  7. 使用CL命令编译cpp文件

    缘起,我的vs 2003无法新建工程,又不喜欢用vs 2013那样的重量级开发工具(就写两行代码,测试测试一些基本的语法规则或算法). 想来vs应该可以像GCC或G++那样直接用命令行编译Cpp文件, ...

  8. ScrollView当显示超出当前页面时自动移动到最底端【转】

    本文转载自:http://gundumw100.iteye.com/blog/1162964 卷轴视图(ScrollView)是指当拥有很多内容,一屏显示不完时,需要通过滚动来显示视图.比如在做一个阅 ...

  9. java2 -宏观了解

    java2 -宏观了解 2016-01-24 16:17 308人阅读 评论(38) 收藏 举报  分类: JAVA(2)  版权声明:本文为博主原创文章,未经博主允许不得转载. Java2平台包括: ...

  10. HDU2243 考研路茫茫——单词情结 ——AC自动机、矩阵优化

    题目链接:https://vjudge.net/problem/HDU-2243 考研路茫茫——单词情结 Time Limit: 2000/1000 MS (Java/Others)    Memor ...