从化在哪里建设网站的,旅游网站的设计,手机登录百度pc端入口,百度关键词挖掘查排名工具目录 1.什么是函数对象
2.仿函数示例 3.代码示例 1.什么是函数对象 函数对象是C中的一种编程概念#xff0c;也称为函数符或仿函数。其实就是重载“()”操作符#xff0c;使得类对象可以像函数那样调用。 分类:假定某个类有一个重载的operator()#xff0c;而且重载的oper…目录 1.什么是函数对象
2.仿函数示例 3.代码示例 1.什么是函数对象 函数对象是C中的一种编程概念也称为函数符或仿函数。其实就是重载“()”操作符使得类对象可以像函数那样调用。 分类:假定某个类有一个重载的operator()而且重载的operator()要求获取一个参数我们就将这个类称为“一元仿函数”相反如果重载的operator()要求获取两个参数就将这个类称为“二元仿函数”。 函数对象的作用主要是什么STL提供的算法往往都有两个版本其中一个版本表现出最常用的某种运算另⼀版本则允许用户通过template参数的形式来指定所要采取的策略。 2.仿函数示例
#include iostream
using namespace std;//定义自己的仿函数
class MyPrint {
public:int _num;MyPrint() {_num 0;}void operator()(int n) {cout n endl;_num;}
};int main() {MyPrint my;my(10);my(20);my(30);cout my._num endl;return 0;
}这是一个使用仿函数的简单示例。在这个例子中MyPrint 是一个仿函数类它定义了 operator()使得类的实例可以像函数一样被调用。在 main 函数中首先创建了 MyPrint 类的一个实例 my然后通过调用 my(10)、my(20)、my(30) 来使用仿函数最后输出 _num 的值。 简要解释每个部分 MyPrint 类定义了一个整数成员变量 _num并在构造函数中初始化为0。operator() 是该类的重载函数使得类的实例可以被调用。在这个例子中调用仿函数时会输出传入的整数并递增 _num 的值。在 main 函数中首先创建了 MyPrint 的实例 my。然后通过 my(10)、my(20)、my(30) 分别调用了仿函数。最后输出了 _num 的值即仿函数被调用的次数。 3.代码示例 #include algorithm
#include vector
#include iostream
using namespace std;class MyComparator {
public:bool operator()(int a, int b) {return a b;}
};int main() {vectorint numbers { 3, 1, 4, 1, 5, 9, 2, 6 };sort(numbers.begin(), numbers.end(), MyComparator());for (int num : numbers) {cout num ;}return 0;
}这段代码演示了如何使用自定义的比较函数对象仿函数来对 C 标准库中的 std::sort 进行自定义排序。 具体解释 MyComparator 类定义 MyComparator 是一个类其中定义了一个重载的圆括号操作符 operator()。这使得 MyComparator 类的实例可以像函数一样被调用。 std::vector 初始化 通过 std::vectorint numbers {3, 1, 4, 1, 5, 9, 2, 6}; 初始化了一个包含整数的向量。 std::sort 调用 std::sort 函数用于对容器进行排序。在这里std::sort(numbers.begin(), numbers.end(), MyComparator()); 使用了自定义的比较函数 MyComparator 进行排序。这表示按照 MyComparator 的定义即按照数字的逆序进行排序。 排序后输出 最后通过循环遍历输出排序后的结果。for (int num : numbers)这是范围for循环的语法它用于遍历容器中的每个元素。这里numbers 是一个容器std::vectorint 类型而 int num 则是循环过程中每个元素的临时变量。 这段代码最终会输出9 6 5 4 3 2 1 1 写在最后以上就是本篇文章的内容了感谢你的阅读。如果感到有所收获的话可以给博主点一个赞哦。如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~