【C++笔记】之匿名函数的几种实现

ops/2024/10/9 17:26:29/

在C++中,匿名函数可以通过以下几种方式实现:

1.利用Lambda表达式(推荐)
Lambda表达式是C++11标准引入的新特性,可以方便地创建匿名函数。

auto lambda = []() {
std::cout << "Hello, World!" << std::endl;
};
lambda();

2.利用函数对象(Function Objects)
可以定义一个重载了operator()的类,并创建该类的对象。

struct Functor {
void operator()() const {
std::cout << "Hello, World!" << std::endl;
}
};
Functor func;
func();

3.利用Bind创建函数链
可以使用std::bind将一个普通函数绑定到一些参数上,形成一个可调用的对象。

void greet() {
std::cout << "Hello, World!" << std::endl;
}
auto func = std::bind(greet);
func();

4.利用Boost.Function和Boost.Bind(需要包含Boost库)
这是一个较老的方法,但在不支持C++11的旧版本C++中,可以使用Boost库中的boost::functionboost::bind

#include <boost/function.hpp>
#include <boost/bind.hpp>void greet() {
std::cout << "Hello, World!" << std::endl;
}
boost::function<void()> func = boost::bind(greet);
func();

以上方法都可以创建匿名函数,但推荐使用Lambda表达式,因为它更简洁,并且是C++11标准的一部分。


http://www.ppmy.cn/ops/27542.html

相关文章

修改word文件的创作者方法有哪些?如何修改文档的作者 这两个方法你一定要知道

在数字化时代&#xff0c;文件创作者的信息往往嵌入在文件的元数据中&#xff0c;这些元数据包括创作者的姓名、创建日期以及其他相关信息。然而&#xff0c;有时候我们可能需要修改这些创作者信息&#xff0c;出于隐私保护、版权调整或者其他实际需求。那么&#xff0c;有没有…

微信小程序:6.事件

什么事事件 事件就是渲染层到逻辑层的通讯方式&#xff0c;比如提交表单&#xff0c;按钮点击都可以看作一个事件。 小程序中常用的事件 事件对象属性列表 当事件回调时&#xff0c;会收到一个事件对象event&#xff0c;他详细属性如夏表所示&#xff1a; target和curren…

【C++】学习笔记——string_3

文章目录 六、string类5. string类的操作6. string类的转换7. string类的模拟实现 未完待续 搭配文档食用 六、string类 5. string类的操作 上面的函数中&#xff0c;有些是不常用的&#xff0c;咱们只挑几个重要的进行讲解。 c_str 就是将字符串转换成 C语言 字符串的格式。…

OpenHarmony语言基础类库【@ohos.xml (xml解析与生成)】

将XML文本转换为JavaScript对象、以及XML文件生成和解析的一系列接口。 说明&#xff1a; 本模块首批接口从API version 8开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import xml from ohos.xml; XmlSerializer XmlSerializer接口…

中国移动举办算力网络未来产业暨联合体创新论坛

4月29日&#xff0c;在国务院国有资产监督管理委员会的指导下&#xff0c;由中国移动主办的算力网络未来产业暨联合体创新论坛在苏州举办。大会以“算网一体&#xff0c;智领未来”为主题&#xff0c;旨在汇聚算力网络产学研各界领军力量&#xff0c;共创算力网络技术策源之路&…

李沐70_bert微调——自学笔记

微调BERT 1.BERT滴哦每一个词元返回抽取了上下文信息的特征向量 2.不同的任务使用不同的特性 句子分类 将cls对应的向量输入到全连接层分类 命名实体识别 1.识别应该词元是不是命名实体&#xff0c;例如人名、机构、位置 2.将非特殊词元放进全连接层分类 问题回答 1.给…

学习VUE2第6天

一.请求拦截器 可以节流&#xff0c;防止多次点击请求 toast是单例 二.前置路由守卫 在Vue.js中&#xff0c;前置路由守卫是指在路由转换实际发生之前执行的钩子函数。这是Vue Router&#xff08;Vue.js官方的路由管理器&#xff09;提供的一种功能&#xff0c;允许开发者在用…

Java并发编程面试问题与答案

1. 什么是线程安全&#xff1f; 答&#xff1a; 线程安全意味着多个线程可以同时访问一个类的实例而不引起任何问题或不一致的结果。线程安全的代码会通过同步机制来确保所有线程都能正确地访问共享资源。 2. 解释Java中的synchronized关键字。 答&#xff1a; synchronized…