爱站网做网站吗,成品网站多少钱,全网品牌推广,学校网站 功能什么是函数对象#xff1f; 函数对象是一种特殊类型的类#xff0c;它重载了函数调用操作符 operator()#xff0c;使得类的实例可以像函数一样被调用。 什么是谓词#xff1f; 谓词是指一个能够返回布尔值#xff08;true或false#xff09;的函数或函数对象 1.一元函数… 什么是函数对象 函数对象是一种特殊类型的类它重载了函数调用操作符 operator()使得类的实例可以像函数一样被调用。 什么是谓词 谓词是指一个能够返回布尔值true或false的函数或函数对象 1.一元函数
一元函数是指接受单个参数的函数
#include iostream
#include vector
#include algorithm// 定义一元函数对象用于打印整数
struct Print {//定义一个结构体void operator()(int x) const {//重载operator()std::cout x ;}
};int main() {std::vectorint numbers {1, 2, 3, 4, 5};// 使用一元函数对象显示集合内容std::for_each(numbers.begin(), numbers.end(), Print());//开始迭代器结束迭代器操作函数(函数对象或Lambda表达式)//调用Print()std::cout std::endl;system(pause);return 0;
}2.一元谓词
一元谓词是一种特殊的一元函数它接受单个参数并返回一个布尔值
#include iostream
#include vector
#include algorithm// 定义一个一元谓词用于判断是否为某个数字的整数
struct IsMultipleOf {//int Divisor;IsMultipleOf(int Divisor) : Divisor(Divisor) {}bool operator()(int number) const {//重载operator()返回布尔值return ((number % Divisor) 0);}
};int main() {std::vectorint numbers {1, 2, 3, 4, 10};// 使用一元谓词 IsMultipleOf 来查找第一个是5的倍数的数字auto it std::find_if(numbers.cbegin(), numbers.cend(), IsMultipleOf(5));if (it ! numbers.cend()) {std::cout The number is: *it std::endl;} else {std::cout No number std::endl;}system(pause);return 0;
}3.二元函数
一元函数是指接受两个参数的函数
#include iostream
#include vector
#include algorithm// 定义一个二元函数实现两个数相乘
struct AddFunctor {//定义一个结构体int operator()(int a, int b) const {//重载operator()return a * b;}
};int main() {std::vectorint numbers1 {1, 2, 3, 4, 5};std::vectorint numbers2 {5, 4, 4, 2, 2};// 使用二元函数计算两个向量对应元素的乘积std::vectorint result(numbers1.size());//定义一个新的vector用来存储结果std::transform(numbers1.begin(), numbers1.end(), numbers2.begin(), result.begin(), AddFunctor());//调用AddFunctor()// 显示结果for (int num : result) {std::cout num ;}std::cout std::endl;system(pause);return 0;
}4.二元谓词
一元谓词是一种特殊的二元函数它接受两个参数并返回一个布尔值
#include iostream
#include vector
#include algorithm// 二元谓词用于比较两个整数的大小
struct GreaterThan {bool operator()(int a, int b) const {return a b; // 返回 a 是否大于 b}
};int main() {std::vectorint numbers {10, 20, 30, 40, 50};// 使用二元谓词对向量进行降序排序std::sort(numbers.begin(), numbers.end(), GreaterThan());// 输出排序后的向量for (int num : numbers) {std::cout num ;}std::cout std::endl;system(pause);return 0;
}