内建的函数对象
内建函数对象的意义
概念:
- STL 内建了一些函数对象 分类:
- 算数仿函数
- 关系仿函数
- 逻辑仿函数 用法:
- 这些仿函数产生的对象,用法和一般函数完全相同
- 使用内建函数的时候,需要引用头文件
#include<functional>
算数仿函数
功能描述:
- 实现了一些基本的算术运算,如加减乘除
- 其中 negate 是一元运算 仿函数模型:
template<class T> T plus<T>
template<class T> T minus<T>
template<class T> T multiplies<T>
template<class T> T divides<T>
template<class T> T modulus<T>
template<class T> T negate<T>
实例:
c++
#include<iostream>
#include<functional>
using namespace std;
int main()
{
int a = 10, b = 5;
cout << plus<int>()(a, b) << endl; // 15
cout << minus<int>()(a, b) << endl; // 5
cout << multiplies<int>()(a, b) << endl; // 50
cout << divides<int>()(a, b) << endl; // 2
cout << modulus<int>()(a, b) << endl; // 0
cout << negate<int>()(a) << endl; // -10
return 0;
}
关系仿函数
功能描述:
- 实现了一些基本的关系运算,如大于小于等于 仿函数模型:
template<class T> bool equal_to<T>
template<class T> bool not_equal_to<T>
template<class T> bool greater<T>
template<class T> bool less<T>
template<class T> bool greater_equal<T>
template<class T> bool less_equal<T>
实例:
c++
#include<iostream>
#include<functional>
using namespace std;
int main()
{
int a = 10, b = 5;
cout << equal_to<int>()(a, b) << endl; // 0
cout << not_equal_to<int>()(a, b) << endl; // 1
cout << greater<int>()(a, b) << endl; // 1
cout << less<int>()(a, b) << endl; // 0
cout << greater_equal<int>()(a, b) << endl; // 1
cout << less_equal<int>()(a, b) << endl; // 0
return 0;
}
逻辑仿函数
功能描述:
- 实现了一些基本的逻辑运算,如与或非 仿函数模型:
template<class T> bool logical_and<T>
template<class T> bool logical_or<T>
template<class T> bool logical_not<T>
实例:
c++
#include<iostream>
#include<functional> // 引入functional头文件
using namespace std;
int main()
{
int a = 10, b = 5;
cout << logical_and<int>()(a > 5, b < 10) << endl; // 1
cout << logical_or<int>()(a > 5, b < 10) << endl; // 1
cout << logical_not<int>()(a > 5) << endl; // 0
return 0;
}
总结
- STL 内建了一些函数对象,可以方便地实现一些基本的运算和逻辑运算
- 这些函数对象可以作为参数传递给算法,实现一些高级功能