千家信息网

C++11标准库mem_fn类模板怎么使用

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容主要讲解"C++11标准库mem_fn类模板怎么使用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++11标准库mem_fn类模板怎么使用"吧!
千家信息网最后更新 2026年11月02日C++11标准库mem_fn类模板怎么使用

本篇内容主要讲解"C++11标准库mem_fn类模板怎么使用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++11标准库mem_fn类模板怎么使用"吧!

定制算法

算法是C++标准库中非常重要的部分,C++通过算法+容器的方式将数据结构和算法进行了分离。这样做的好处就是使用户获得最大限度的灵活性。

例如下面的Tracer类。

我们可以非常方便的定义保存Tracer对象的数据结构:

然后非常方便的利用排序算法进行排序:

代码中的compare是另外定义的一个比较函数:

通过这个函数来选择比较的对象并决定比较的结果。

严格讲,算法中要求的并不是函数,而是一个可调用对象。参考本连载前面的文章可以知道,可调用对象就是可以以fun(a)的形式执行的功能。C++中的可调用对象包括函数,函数对象,lambada表达式,参数绑定等,它们都可以作为算法的参数。

使用function生成可调用对象

上面讲到的方法非常容易理解,但是稍微有点麻烦,我们希望可以直接使用Tracer的成员函数compare成员函数。这个需求可以使用C++11中引入的function来解决:

function是一个模板,可以指定可调用对象的形式。例子中指定了tcomp的形式:返回值为bool,参数为两个Tracer&。代码中将Tracer的成员函数compare赋值给tcomp之后就可以使用它了:

这种情况下,tcomp(t1,t2)动作可以理解为t1.compare(t2)。通过这种方式,我们可以将类的成员函数转换为可调用对象。于是排序代码就可以写成下面的样子。

使用mem_fn生成可调用对象

使用function的方法,还是有点麻烦:虽然&Tracer::compare的签名已经决定了可调用对象的形式,程序员还是需要另外指定。解决这个问题的方法是使用mem_fn(注意不是mem_fun)来生成可调用对象:

mem_fn会根据成员函数指针推断可调用函数的类型,就省去了另外指定的步骤。

到此,相信大家对"C++11标准库mem_fn类模板怎么使用"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

对象 函数 可调 算法 成员 标准 模板 形式 方法 代码 参数 C++ 排序 生成 内容 就是 数据 数据结构 方式 结构 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 喔噻互联网科技有限公司 互联网属科技 互联网科技深圳 安徽鑫晟辉互联网科技 朗涯互联网科技 互联网科技logo 广州善班互联网科技 互联网金融科技委员会 甘肃拓世互联网科技有限公司 团飞科技与伯堂互联网服务平台 知域互联网科技有限公司大骗子 电子科技大学互联网创业大赛 无锡工业互联网科技有限公司 沐思想互联网科技有限公司 元气玛特互联网科技公司是外包吗 黑云互联网科技有限公司 宇信科技在杭州互联网排第几 半导体行业属于互联网高科技类吗 2021世界互联网领先科技成果发布 知域互联网科技有限公司官网 百单网互联网科技有限公司 互联网是第几次科技革命的成果 互联网科技行业发展 合肥互联网科技公司 科技互联网公司logo 成都狮子座互联网科技 中化能源互联网科技招聘 贵州叶脉互联网科技有限公司所属行业 互联网公司黑科技创始人 济南有互联网科技公司吗
0