千家信息网

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

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,本篇内容主要讲解"C++11标准库mem_fn类模板怎么使用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++11标准库mem_fn类模板怎么使用"吧!
千家信息网最后更新 2025年01月31日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安全错误 数据库的锁怎样保障安全 我的世界如何进入二b二t服务器 成都警示教育展馆软件开发 上传外部数据到数据库 注册嘀嗒服务器错误 赛尔号手游有几个服务器 用友软件开发后续发展前景 怎么样拷服务器上的数据库 toad数据库登录 校招软件开发工程师 网络发展观网络安全观 数据库中有哪三种类型的表 form在数据库中什么意思 fm开档后数据库怎么换 网络安全法 迫切需要 位置跟踪软件开发 魔兽世界凤凰之神服务器哪年开的 恒生科技指数 中概互联网 steam充钱显示服务器有问题 腾讯会议怎么自己创建服务器 计算机网络技术主要是干嘛的 新吴区创新网络技术创新服务 易语言 远程连接数据库 软件开发的专业叫什么名字 现在做软件开发用什么语言 高稳定性的聊天软件开发 网络安全基本形势和重要动态 软件开发正规公司 php 服务器信息 当前网络安全市场介绍 定额清单组价数据库
0