C11 std::function 学习

news2024/11/27 11:39:42

此文,
https://blog.csdn.net/bcbobo21cn/article/details/111658249
使用了一次C11 std::function,是作为函数指针使用的;

进一步的来说,C11的std::function可以对任何可以调用的目标实体进行调用操作;

std::function

类模板 std::function 是一种通用的、多态的函数封装。
std::function 的实例可以对任何可以调用的目标实体进行存储、复制和调用操作,这些目标实体包括普通函数、Lambda 表达式、函数指针以及其他函数对象等。
std::function 对象是对 C++ 中现有的可调用实体的一种类型安全的包裹(像函数指针这类可调用实体,是类型不安全的)。

std::function其实就是一个类模板,含有c的函数指针概念。

简要来说:std::function是将所有可调用的实体封装起来,形成了一个新的std::function对象,用户在使用的时候不需要再去调用实体,只需要使用新的std::function来调用各实体;

示例,调用任何有两个int形参的返回值为int的对象;

#include <iostream>
#include <functional>
#include <list>
using namespace std;

int myadd(int a, int b)
{
    return a + b;
}

class MyFunc
{
public:
    int operator()(int a, int b)
    {
        return a + b;
    }
};

int main(int argc, char** argv)
{
    MyFunc func;
    std::list<std::function<int(int, int)>> flist;

    flist.push_back(myadd);
    flist.push_back(func);
    flist.push_back([](int x, int y)->int{
        return x + y;
    });

    for (const auto& e : flist)
    {
        cout << e(13, 14) << endl;
    }
}

 

代码中list存储std::function<int(int, int)>类型的对象;然后逐个执行调用; 

 

 

第27行的写法我不是太熟悉,很少写这样的语法; 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/665061.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RFID课程要点总结_5 EPC

5. EPCglobal Standard & protocol Concept of EPC global network EPCglobal Network: a technology that allows trading partners to document and determine the location of individual goodsif possible in real timeadditional information: such as 生产使用日期…

golang代码规范之框架搭建规范

编写本规范的目的在于&#xff0c;让开发者更方便快捷地搭建项目框架&#xff0c;同时让团队内部的技术栈达到统一。 指导思想 框架搭建需要适应项目的变化&#xff0c;为项目选择最合适的架构&#xff0c;没有什么是一成不变的。技术架构应该是不断完善的&#xff0c;在满足当…

pytest 自动化学习

一 pytest简介与安装 def inc(x): return x1 def test_answer(): assert inc(3) 5 #判断 4会不会等5 二 Pytest 命令规则 三 pycharm配置与界面化运行 四 pytest测试用例结构 用例结构 三部分构成 1.用例名称用例步骤 2.编辑 3.断言…

Docker 进入容器和交换文件

1、进入容器 有些时候需要进入容器进行操作&#xff0c;使用 docker exec 命令&#xff0c;这个命令后面可以添加很多参数&#xff0c;我们这里只讲添加 -i 和 -it 参数。 只添加 -i 参数时&#xff0c;由于没有分配伪终端&#xff0c;界面没有我们熟悉的 Linux 命令提示…

人工智能第2章基于图的知识表示与图搜索技术(课后部分习题答案)

解&#xff1a;用四元组&#xff08;f&#xff0c;w&#xff0c;s&#xff0c;g&#xff09;表示状态&#xff0c;其中 f 表示猎人&#xff0c;w 表示狼&#xff0c; s 表示羊&#xff0c;g 表示草&#xff0c;其中每个元素都可以为 0 或 1&#xff0c;表示在左案&#xff0c; …

chatgpt赋能python:Python将图片转换为代码的顶级SEO文章

Python将图片转换为代码的顶级SEO文章 在当今数字化的世界中&#xff0c;图像和代码都是最为重要的元素之一。Python作为一种流行的编程语言&#xff0c;可以帮助我们将这两种元素结合起来&#xff0c;让我们从图像中提取出代码。本文将讨论Python如何将图像转换为代码&#x…

哈工大计算机网络传输层协议详解之:TCP协议

哈工大计算机网络传输层协议详解之&#xff1a;TCP协议 文章目录 哈工大计算机网络传输层协议详解之&#xff1a;TCP协议TCP概述TCP段结构序列号和ACKTCP可靠数据传输RTT和超时TCP发送方事件TCP发送端程序伪代码TCP重传示例TCP接收方 ACK生成TCP快速重传机制 TCP流量控制TCP连接…

总结905

今日已做&#xff1a; 1.核聚课程 2.进步本回顾&#xff0c;重做8道题&#xff0c;有两道还没掌握&#xff0c;记录3页。 3.线性代数第5讲 4.三大计算&#xff0c;刷题15道&#xff0c;纠错。 5.每日长难句。 6.考研常识课 明日必做 1.熟练背诵《the king’s speech》并默写 2…

chatgpt赋能python:Python抽卡:让你的游戏更充实

Python抽卡&#xff1a;让你的游戏更充实 作为一款流行的游戏&#xff0c;抽卡是许多玩家最喜欢的功能之一。通过不断的抽卡&#xff0c;你可以获取到更加强大的角色和装备&#xff0c;从而在游戏中获得更多的胜利。但是&#xff0c;手动抽卡需要耗费大量的时间和精力&#xf…

简要介绍 | 点云距离度量:从原理到应用

注1&#xff1a;本文系“简要介绍”系列之一&#xff0c;仅从概念上对点云距离度量进行非常简要的介绍&#xff0c;不适合用于深入和详细的了解。 点云距离度量&#xff1a;从原理到应用 3D deep learning on Point cloud 1. 背景介绍 点云数据在计算机图形学、计算机视觉、自…

C#探索之路(9):深入理解C#代码编译的过程以及原理

C#探索之路(9)&#xff1a;深入理解C#代码编译的过程以及原理 文章目录 C#探索之路(9)&#xff1a;深入理解C#代码编译的过程以及原理一、前言&#xff1a;概念解析1、编译器&#xff1a;2、JIT是什么&#xff1f;3、AOT是什么&#xff1f;4、如何理解这个“基于运行时”的概念…

Shell 脚本和编程

shell脚本和编程 Shel基础概念 Shell是一种命令行解释器&#xff0c;是Linux系统中最常用的命令行界面。Shell脚本是由一系列Shell命令组成的文本文件&#xff0c;可以用来自动化执行Linux系统上的任务。Shell脚本是一种强大的工具&#xff0c;可以通过编写脚本来实现自动化运…

FPGA XDMA 中断模式实现 PCIE X8 测速试验 提供工程源码和QT上位机源码

目录 1、前言2、我已有的PCIE方案3、PCIE理论4、总体设计思路和方案XDMA简介XDMA中断模式QT上位机及其源码 5、vivado工程详解6、上板调试验证7、福利&#xff1a;工程代码的获取 1、前言 PCIE&#xff08;PCI Express&#xff09;采用了目前业内流行的点对点串行连接&#xf…

Unity 之 最新原生广告Ads接入 -- 助力增长游戏收益

Unity 之 最新Ads原生广告接入流程详解和工具类分享 一&#xff0c;注册 Unity Ads 广告 SDK二&#xff0c;下载 Unity Ads 广告 SDK三&#xff0c;配置 Unity Ads 广告 SDK3.1 广告位展示流程3.2 代码初始化 四&#xff0c;集成 Unity Ads 广告 SDK4.1 相关介绍4.2 代码分享 五…

开发日记-凌鲨中数据库代理的实现

凌鲨定位于连接研发过程中一切信息和工具。下面是数据库代理的大概框架&#xff1a; 技术选型 使用golang开发各种数据库协议代理,redis-proxy,mysql-proxy,mongo-proxy使用swagger提供代理协议的调试 选型原因 我们的客户端使用了tauri作为框架&#xff0c;在实现扩展功能的…

基于阴影检测和平衡亮度差阴影消除算法的MATLAB完整程序分享

完整代码: clc; clear; close all; warning off; addpath(genpath(pwd)); I=imread(1.png);%%此处导入自己需要检测的图片 [x,y,z]=size(I); figure(Name,Processing Steps),subplot(3,2,1), imshow(I),title(Image 1: Original Image); I=uint8(I); temp1=I; half_intens…

MySQL优化--MVCC

目录 概念 MVCC的具体实现 隐式字段 undo log日志 概念 undo log版本链 readview 接上文&#xff0c;redo log保证了事务的持久性&#xff0c;undo log 保证了事务的原子性和一致性 那&#xff0c;隔离性是如何保证的呢&#xff1f; 锁&#xff1a;排他锁&#xff08;如…

Linux下Redis 存储

命令使用 目录 命令使用 RDB持久化 AOF持久化 yum安装 [rootlocalhost ~]# yum -y install redis 已加载插件&#xff1a;fastestmirror Loading mirror speeds from cached hostfile* c7-media: * epel: ftp.yz.yamagata-u.ac.jpvim到文件etc/redis.conf 取消注释requirep…

Paddle lite 初识与简单使用

一、何为Paddle lite 官方解释如下&#xff1a; Paddle Lite是飞桨基于Paddle Mobile全新升级推出的端侧推理引擎&#xff0c;在多硬件、多平台以及硬件混合调度的支持上更加完备&#xff0c;为包括手机在内的端侧场景的AI应用提供高效轻量的推理能力&#xff0c;有效解决手机…

Android——事务处理(十二)

1. 事件处理简介 1.1 知识点 &#xff08;1&#xff09;了解事件处理的作用&#xff1b; &#xff08;2&#xff09;了解常用的事件及相关处理接口&#xff1b; 1.2 具体内容 在android当中&#xff0c;基本上每一个组件都有用相应的事件处理&#xff0c;但是不过有多少种事…