首页 > 其他分享 >Lambda表达式

Lambda表达式

时间:2024-08-11 23:07:51浏览次数:10  
标签:const people age Person 表达式 Lambda

[Lang] Lambda表达式

1. Lambda表达式的语法

[capture](parameters) -> return_type {
    body
};
  • capture:捕获外部作用域变量的方式。
  • parameters:参数列表,类似于普通函数。
  • -> return_type(可选):返回类型。如果省略,编译器会自动推断。
  • body:函数体,包含需要执行的代码。

2. Lambda表达式 对比 仿函数

Lambda表达式在需要定义简单的、一次性的操作时非常有用,可以显著减少样板代码,提升代码的简洁性和可读性。

仿函数:

#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;

class Person {
public:
    Person(string name, int age) : name(name), age(age) {}
    string name;
    int age;
};

// 仿函数(谓词)类定义
class CompareByAge {
public:
    bool operator()(const Person &a, const Person &b) const {
        return a.age < b.age;
    }
};

int main() {
    vector<Person> people = {
        Person("Alice", 25),
        Person("Bob", 30),
        Person("Charlie", 20),
    };

    // 使用仿函数(谓词)对象进行排序
    sort(people.begin(), people.end(), CompareByAge());

    // C++11新特性:使用auto关键字自动推导类型
    // C++11新特性:range-based for loop
    for (const auto &person : people) {
        cout << person.name << " " << person.age << endl;
    }
    return 0;
}

Lambda表达式:

#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;

class Person {
public:
    string name;
    int age;
};

int main() {
    vector<Person> people = {
        Person{"Alice", 25},
        Person{"Bob", 30},
        Person{"Charlie", 20},
    };

    // 使用Lambda表达式进行排序
    sort(people.begin(), people.end(), [](const Person &a, const Person &b) {
        return a.age < b.age;
    });

    for (const auto &person : people) {
        cout << person.name << " " << person.age << endl;
    }
    return 0;
}

标签:const,people,age,Person,表达式,Lambda
From: https://www.cnblogs.com/yaoguyuan/p/18354072

相关文章

  • 提高效率:Linux 正则表达式实用技巧
    目录前言匹配符号用法讲解“.”用法[]用法“*”用法“.*”用法“\?”用法“\+”用法“\\{n\\}”用法\\{m,n\\}用法锚点符号“^”用法“$”用法“^$”用法或|用法前言在Linux系统中,正则表达式(RegularExpressions,简称regex)是一个强大的工具,广泛应......
  • 表达式目录树
    1.表达式目录树和委托的类比:表达式目录树是一种数据结构、是一种语法树,可以被我们解析: 2.表示式目录树的使用场景:把一个对象中的数据赋值到另一个对象当中:实现对象值赋值:一.反射: 二.序列化器: 三.使用表达式目录树4.使用泛型缓存+表达式目录树 调用如下: 5.Exp......
  • C++ 11 auto(自动类型推导) 和 decltype(获取表达式类型)
    C++(2)auto占位符自动类型推导auto能够实现类型的自我推导,并不代表一个实际的类型声明。auto只是一个类型声明的占位符。auto声明的变量,必须马上初始化,以让编译器推断出它的实际类型,并在编译时将auto占位符替换为真正的类型。注意:C++11中auto不能用于函......
  • Linux Shell编程--正则表达式、grep、sed、awk
    前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除!一、正则表达式1、正则表达式定义1.1、简介正则表达式是一种强大的文本模式匹配工具,用于搜索、替换或分割字符串。在Shell脚本中,正则表达式通常与grep、sed和awk等工具一起使用。1.2、层次分类基......
  • 【Regex】正则表达式详解:从基础到高级应用(保姆篇)
    文章目录正则表达式详解:从基础到高级应用一、正则表达式基础1.什么是正则表达式?2.基本组成部分二、正则表达式的常用模式1.字符匹配2.量词3.位置符号4.分组和捕获三、正则表达式的高级应用1.断言(Assertions)2.贪婪与非贪婪匹配四、正则表达式在不同编程语言中......
  • com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: can not find lamb
    异常提示:com.baomidou.mybatisplus.core.exceptions.MybatisPlusException:cannotfindlambdacacheforthisentity 使用mockito框架做单元测试:mybatisplus使用Lambda表达式做条件查询、条件更新时会遇到mybatis拿不到缓存问题:错误1:com.baomidou.mybatisplus......
  • IntelliJ IDEA 2024.2 发布:Spring Data JPA即时查询、自动补全cron表达式
    今早看到,IntelliJIDEA2024.2发布的邮件提示,看了一眼这个版本更新的新特性真的太适合我了!也许这些能力对关注DD的小伙伴也有帮助,所以搞篇博客介绍和推荐一下。下面就来一起看看这个版本中推出的几个强大新特性。SpringDataJPA的即时查询在2024.2Ultimate版本中,对Spring......
  • sed 命令与正则表达式
    sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都会被打印到屏幕上。sed编辑器逐行处理文件(或输入),并将结果打印到屏幕上。具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓......
  • 表达式(二)
    后缀表达式由于其特殊性只需要操作数栈,不需要运算符栈,每当出现运算符就说明是对前面两个操作数进行操作#include<bits/stdc++.h>usingnamespacestd;chartok[30][20];inttok_max;intpos=1;intmain(){ tok_max=0; intnum1=0; for(;;){ intc=getchar(); if(c=......
  • cron表达式
    一、插入组件安装:npminstallvue-cron--save引入:importVuefrom'vue'importElementUIfrom'element-ui';import'element-ui/lib/theme-chalk/index.css'Vue.use(ElementUI);//在main.js文件里全局引入importVueCronfrom'vue-cron......