蓝桥ROS机器人之现代C++学习笔记3.1 Lambda 表达式

Posted zhangrelay

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝桥ROS机器人之现代C++学习笔记3.1 Lambda 表达式相关的知识,希望对你有一定的参考价值。

请使用下文中提及的镜像:

蓝桥ROS机器人之现代C++学习笔记支持C++17(已完成)_zhangrelay的博客-CSDN博客



 

基础

1. 值捕获

2. 引用捕获

3. 隐式捕获

4. 表达式捕获

泛型 Lambda

#include <iostream>
#include <memory>  // std::make_unique
#include <utility> // std::move

void lambda_value_capture() 
    int value = 1;
    auto copy_value = [value] 
        return value;
    ;
    value = 100;
    auto stored_value = copy_value();
    std::cout << "stored_value = " << stored_value << std::endl;
    // At this moment, stored_value == 1, and value == 100.
    // Because copy_value has copied when its was created.


void lambda_reference_capture() 
    int value = 1;
    auto copy_value = [&value] 
        return value;
    ;
    value = 100;
    auto stored_value = copy_value();
    std::cout << "stored_value = " << stored_value << std::endl;
    // At this moment, stored_value == 100, value == 100.
    // Because copy_value stores reference


void lambda_expression_capture() 
    auto important = std::make_unique<int>(1);
    auto add = [v1 = 1, v2 = std::move(important)](int x, int y) -> int 
        return x+y+v1+(*v2);
    ;
    std::cout << add(3,4) << std::endl;


void lambda_generic() 
    auto generic = [](auto x, auto y) 
        return x+y;
    ;
    
    std::cout << generic(1, 2) << std::endl;
    std::cout << generic(1.1, 2.2) << std::endl;


int main() 
    lambda_value_capture();
    lambda_reference_capture();
    lambda_expression_capture();
    lambda_generic();
    return 0;


以上是关于蓝桥ROS机器人之现代C++学习笔记3.1 Lambda 表达式的主要内容,如果未能解决你的问题,请参考以下文章

蓝桥ROS机器人之现代C++学习笔记之路径规划

蓝桥ROS机器人之现代C++学习笔记2.5 模板

蓝桥ROS机器人之现代C++学习笔记7.3 期物

蓝桥ROS机器人之现代C++学习笔记资料

蓝桥ROS机器人之现代C++学习笔记7.5 内存模型

蓝桥ROS机器人之现代C++学习笔记4.3 元组