应用

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. coreseek中文搜索

    coreseek的安装和使用 准备软件包 coreseek-3.2.14.tar.gz 其他汁源 coreseek中文索引-示例文件.zip sphinx配置文件详解.txt 1.安装组件 yum - ...

  2. 对A轮的追逐变得越加狂热,当前距离互联网泡沫到底有多近?

    编者注:本文来自TOMASZ TUNGUZ,中文版由天地会珠海分舵进行编译. 依据NVCA披露的最新数据,在2015年第二季度.VC总共进行了167亿美元的投资,大约是2000年互联网泡沫时候同期的6 ...

  3. Java实参和形参与传值和传引用

    实参和形参的定义: 形参出现函数定义中,在整个函数体内都可以使用,离开函数则不能使用. 实参出现在主函数中,进入被调函数后,实参变量也不能使用. 形参和实参的功能是做数据传送.发生函数调用时,主调函数 ...

  4. zabbix simple check

    摘自: http://www.ttlsa.com/zabbix/zabbix-simple-checks/ 1. 开始 Simple checks通常用来检查远程未安装代理或者客户端的服务 使用sim ...

  5. html5--1.5 文本元素

    html5--1.5 文本元素 学习要点: 掌握常用的文本元素 文本元素,就是讲一段文本设置成相匹配的结构和含义 1.b元素: 我的作用就是 加粗文字: 2.br元素: 我的作用就是强制换行: 3.i ...

  6. navicat for mysql 安装

    直接上正题,用于记录 1.下载linux版本的navicat:http://www.navicat.com/download/navicat-for-mysql 2.解压 tar -vzxf navi ...

  7. 分布式锁的实现方式——ACID数据库、缓存或者是zk

    针对分布式锁的实现,目前比较常用的有以下几种方案: 基于数据库实现分布式锁 基于缓存(redis,memcached,tair)实现分布式锁 基于Zookeeper实现分布式锁 在分析这几种实现方案之 ...

  8. Lucene默认的打分算法——ES默认

    改变Lucene的打分模型 随着Apache Lucene 4.0版本在2012年的发布,这款伟大的全文检索工具包终于允许用户修改默认的基于TF/IDF原理的打分算法.Lucene API变得更加容易 ...

  9. 线程池ThreadPool的常用方法介绍

    线程池ThreadPool的常用方法介绍 如果您理解了线程池目的及优点后,让我们温故下线程池的常用的几个方法: 1. public static Boolean QueueUserWorkItem(W ...

  10. Linux_服务器_02_在linux上怎么看eclipse控制台输出语句

    在windows下,tomcat启动之后有一个黑窗口,很容易看到System.out.println或ex.printStackTrace这样的函数输出,非常方便调试,但是在linux下,没有这样的窗 ...