news 2026/5/20 9:30:43

在类内定义一个普通函数,并作为排序的规则

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在类内定义一个普通函数,并作为排序的规则

std::bind

当我们更想要在类内定义一个普通函数,并作为排序的规则时应该怎么办?

我们尝试写出如下代码,并成功获得一大堆编译错误。

#include <algorithm> #include <climits> #include <vector> class Cmp { public: bool cmp(const int& a, const int& b) { return a < b; } }; int main(void) { std::vector<int> arr = {INT_MAX, INT_MIN, -1, 0, 1}; // 使用class Cmp 中的 cmp函数 std::sort(arr.begin(), arr.end(), &Cmp::cmp); }

法一

当新手去百度答案时,有一种解决方案是在该函数前写出 static。

class Cmp { public: static bool cmp(const int& a, const int& b) { return a < b; } };

法二

而另一种方式是使用名为 的函数来处理。具体方案如下。

#include <algorithm> #include <climits> #include <functional> #include <vector> class Cmp { public: bool cmp(const int& a, const int& b) { return a < b; } }; int main(void) { std::vector<int> arr = {INT_MAX, INT_MIN, -1, 0, 1}; // _1, _2占位符的命名空间 using namespace std::placeholders; Cmp obj; auto cmp = std::bind(&Cmp::cmp, &obj, _1, _2); std::sort(arr.begin(), arr.end(), cmp); }

原理

我们来分析一下 auto cmp = std::bind(&Cmp::cmp, &obj, _1, _2); ,这个语句。

第一个参数是我们需要调用的函数,第二个是匹配对象的地址,后两个是以下划线 _ 开头的数字。

而为什么方法一的添加 static 也可以呢,因为静态函数不属于类的成员函数,没有隐式的 this 指针。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/20 9:29:58

量子近似优化算法在车辆路径问题中的应用与实践

1. 量子近似优化算法&#xff08;QAOA&#xff09;与车辆路径问题的结合量子近似优化算法&#xff08;Quantum Approximate Optimization Algorithm, QAOA&#xff09;是一种专为组合优化问题设计的混合量子-经典算法。它通过交替应用问题哈密顿量和混合哈密顿量&#xff0c;在…

作者头像 李华
网站建设 2026/5/20 9:28:06

别再让WSL2的VHDX文件占满C盘!手把手教你用Diskpart无损收缩虚拟磁盘

WSL2虚拟磁盘瘦身实战&#xff1a;彻底解决C盘空间焦虑 你是否经历过这样的场景&#xff1a;刚打开资源管理器&#xff0c;刺眼的红色空间警告就跳出来提醒你C盘即将爆满&#xff1f;作为Windows开发者&#xff0c;WSL2带来的便利与C盘空间被VHDX文件吞噬的烦恼往往如影随形。本…

作者头像 李华
网站建设 2026/5/20 9:20:02

5分钟掌握HTTrack:高效离线网站下载工具完整指南

5分钟掌握HTTrack&#xff1a;高效离线网站下载工具完整指南 【免费下载链接】httrack HTTrack Website Copier, copy websites to your computer (Official repository) 项目地址: https://gitcode.com/gh_mirrors/ht/httrack HTTrack Website Copier是一款功能强大的开…

作者头像 李华
网站建设 2026/5/20 9:18:12

基于python爬虫的天气数据的预测及可视化

第1章 绪论1.1 课题背景全球气候变化的加剧以及城市化进程的不断推进&#xff0c;天气数据预测在各个领域的重要性也越来越大&#xff0c;对于海口市来说&#xff0c;由于它是海南省的省会城市&#xff0c;具有独特的地理位置和气候特点&#xff0c;所以天气变化会对当地居民的…

作者头像 李华