当前位置: 首页 > wzjs >正文

郑州快速建站价格小璇seo优化网站

郑州快速建站价格,小璇seo优化网站,移动网站建设,建设个b2c网站[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、C …

[作者]
常用网名: 猪头三
出生日期: 1981.XX.XX
企鹅交流: 643439947
个人网站: 80x86汇编小站
编程生涯: 2001年~至今[共24年]
职业生涯: 22年
开发语言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、
开发工具: Visual Studio、Delphi、XCode、C++ Builder、Eclipse
技能种类: 逆向 驱动 磁盘 文件 大数据分析
涉及领域: Windows应用软件安全/Windows系统内核安全/Windows系统磁盘数据安全/macOS应用软件安全
项目经历: 股票模型量化/磁盘性能优化/文件系统数据恢复/文件信息采集/敏感文件监测跟踪/网络安全检测
专注研究: 机器学习、股票模型量化、金融分析

[序言]
在现代C++编程中, 函数对象和回调机制被广泛应用, 尤其是在泛型编程和并发编程中, 将成员函数和成员变量进行绑定变得十分常见. 传统上, 可以使用std::bind来将类成员函数绑定为可调用对象, 但它在功能强大的同时, 也会引入一定的复杂性和额外开销. 相对而言, std::mem_fn提供了一种更轻量级的解决方案, 专注于将成员函数或成员变量转换为可调用对象, 从而在简单场景下获得更清晰和高效的实现.

[代码演示]

#include <iostream>
#include <memory>
#include <functional>
#include <fcntl.h>
#include <io.h>
#include <cwchar>struct MEM_FN
{// 无参成员函数, 返回一个宽字符字符串std::wstring mpu_display_Str(){return L"Hello World";}// 带有1个参数的成员函数, 返回输入参数加1的结果int mpu_display_Num(int int_param_1){return int_param_1 + 1;}// 带有2个参数的成员函数, 返回成员变量与参数之和int mpu_display_Add(int int_param_1, int int_param_2){return mpu_Data + int_param_1 + int_param_2;}// 模板成员函数, 使用折叠表达式求和template<typename... Args>int mpu_display_Add_many(Args... args){return (args + ...);}int mpu_Data{ 7 };
};int main() {// 设置标准输出为宽字符模式_setmode(_fileno(stdout), _O_WTEXT);auto class_Mem_Fn = MEM_FN{};// 绑定无参数的成员函数, 通过 std::mem_fn 生成可调用对象auto fn_display_Str = std::mem_fn(&MEM_FN::mpu_display_Str);std::wcout << fn_display_Str(class_Mem_Fn) << std::endl;// 绑定带有1个参数的成员函数, 调用时传入类对象和参数auto fn_display_Num = std::mem_fn(&MEM_FN::mpu_display_Num);std::wcout << fn_display_Num(class_Mem_Fn, 1) << std::endl;// 绑定带有2个参数的成员函数, 调用时依次传入类对象和参数auto fn_display_Add = std::mem_fn(&MEM_FN::mpu_display_Add);std::wcout << fn_display_Add(class_Mem_Fn, 1, 2) << std::endl;// 绑定模板成员函数, 注意支持类对象指针传入auto pclass_Mem_Fn = std::make_unique<MEM_FN>();auto fun_display_Add_many = std::mem_fn(&MEM_FN::mpu_display_Add_many<short, int, long>);std::wcout << fun_display_Add_many(pclass_Mem_Fn, 1, 2, 3) << std::endl;// 绑定类成员变量, 可直接通过调用获取变量值auto fn_access_Data = std::mem_fn(&MEM_FN::mpu_Data);std::wcout << fn_access_Data(pclass_Mem_Fn) << std::endl;std::cin.get();return 0;
}

[代码说明]
1. std::mem_fn绑定成员函数
   通过std::mem_fn可以将成员函数指针转换为可调用对象, 该对象在调用时会自动传入类对象或类对象指针作为第一个参数. 例如, 对于无参函数, 调用时只需传入类对象即可, 对于带参函数, 调用时需要依次传入类对象和相应参数. 与std::bind相比, std::mem_fn不支持占位符等高级绑定功能, 但在简单绑定场景下更为直观和高效.

2. 支持模板成员函数和成员变量的绑定
   利用std::mem_fn绑定模板成员函数mpu_display_Add_many(), 此时需要显式指定模板参数, 同时也利用std::mem_fn直接绑定成员变量mpu_Data. 这种绑定方式既保证了代码的简洁性, 又能提高代码的可读性和性能, 因为不涉及额外的参数转换或包装.

3. 与std::bind的对比
   std::bind提供了更为灵活的参数占位符和参数重排序功能, 适用于复杂绑定需求; 而std::mem_fn则专注于简单, 直接地将成员函数或成员变量转换为可调用对象. 因此, 当仅需简单绑定时, 推荐使用 std::mem_fn以减少额外开销和代码复杂度.

[总结]
std::mem_fn是C++11引入的一个轻量级工具, 专注于将类的成员函数或成员变量转换为可调用的函数对象. 与功能更强大的std::bind相比, 两者在以下几个方面存在显著区别:

1. 设计目标与轻量级特性  
   std::mem_fn专注于绑定类的成员函数和成员变量, 实现简单且高效.
   std::bind是一个通用工具, 不仅能绑定成员函数, 还能处理普通函数、参数占位符和参数重排, 功能更丰富但开销稍大.

2. 使用场景
   如果仅需将成员函数或变量封装为函数对象, std::mem_fn是更直接的选择.  
   若需绑定特定参数值或调整参数顺序, std::bind则更适合.

3. 性能与开销
   std::mem_fn因其单一职责, 在简单场景下通常比std::bind更高效.
   std::bind由于支持复杂功能, 在运行时可能引入额外开销.

4. 代码可读性
   std::mem_fn意图明确, 代码简洁, 适合表达简单的绑定需求.
   std::bind在复杂场景下可能需要更多代码, 可读性稍逊.

在实际开发中, 选择std::mem_fn还是std::bind取决于具体需求. 对于简单的成员函数调用或成员变量访问, std::mem_fn提供了更高的效率和清晰度; 而对于需要参数绑定或更灵活操作的场景, std::bind则是不二之选. 通过理解两者的特点, 可以在现代C++中编写更优雅、更高效的代码.

http://www.dtcms.com/wzjs/104995.html

相关文章:

  • 免费建站网站seo网络营销推广方案范文
  • 中铁广州建设有限公司网站sem招聘
  • 同城招聘网站自助建站信息互联网推广
  • 做pc端的网站首页尺寸是多少网络营销的概念与特点
  • 2019怎么做网站赚钱广点通广告平台
  • 长春网站开发报价天津的网络优化公司排名
  • 界面简洁的网站帆软社区app
  • 做网站要会什么百度信息流开户多少钱
  • 郑州专门做网站的公司有哪些中国腾讯和联通
  • 做的一个网站多少钱安徽疫情最新情况
  • 网站建设 推广seo综合
  • 网站主页被做跳转pr的选择应该优先选择的链接为
  • 网站设计南方企业网千锋培训机构官网
  • 济南中风险地区学seo网络推广
  • 宝贝我想跟你做网站微信推广广告在哪里做
  • 民宿可以在哪些网站做推广seo提供服务
  • 网站建设案例单招网网址安全中心检测
  • 昆明做网站的个人优化关键词排名seo软件
  • 公司展示网站模板如何做seo搜索优化
  • 怎么做彩票网站各大网址收录查询
  • v2ray wordpress常州网站seo
  • 如何修改一个网站的后台登陆系统灰色词网站seo
  • 网站没有内容 备案能成功吗佛山网站建设
  • wordpress开启七牛引擎搜索优化
  • 高校对网站建设的重视seopeix
  • 天津疫情最新通报推广优化seo
  • 萧县做网站的公司百度文库个人登录
  • 上海高端网站制作个人开发app可以上架吗
  • 网站后台上传不了文件搜索引擎内部优化
  • 手机网站建设哪家专业外贸网站制作公司哪家好