ps:以下均为不完全举例,其余大同小异
包含头文件:functional
算术仿函数
算术仿函数:加(plus)减(minus)乘(multiplies)除(divides)取模(modulus)取反(negate)
negate:一元运算,其余均为二元运算
negate
//negate
void negate_test() {
negate<int> n;
cout << n(50) << endl;
}
plus
//plus,其余跟加法一样
void plus_test() {
plus<int> p;
cout << p(10, 20) << endl;
}
关系仿函数
等于(equal_to)不等于(not_equal_to)大于(greater)
大于等于(greater_equal)小于(less)小于等于(less_equal)
greater
//greater
void greater_test() {
vector<int> v;
v.push_back(1);
v.push_back(4);
v.push_back(2);
v.push_back(5);
v.push_back(3);
//内建函数对象,仿函数的使用:greater<typename>():匿名对象
sort(v.begin(), v.end(), greater<int>());
}
逻辑仿函数
与(logical_and)或(logical_or)非(logical_not)
logical_not
//logical_not
void logical_not_test() {
vector<bool> v;
v.push_back(true);
v.push_back(false);
v.push_back(false);
v.push_back(true);
for (vector<bool>::iterator it = v.begin(); it != v.end(); it++) {
cout << *it << " ";
}
cout << endl;
vector<bool> v2;
v2.resize(v.size());
transform(v.begin(), v.end(), v2.begin(), logical_not<bool>());
for (vector<bool>::iterator it = v2.begin(); it != v2.end(); it++) {
cout << *it << " ";
}
cout << endl;
}