文章目录
- C++ STL中的算数、关系和逻辑仿函数
- 1. 算数仿函数
- 2. 关系仿函数
- 3. 逻辑仿函数
C++ STL中的算数、关系和逻辑仿函数
STL(Standard Template Library)是C++标准库的一部分,提供了许多强大的工具和功能,其中包括仿函数(function object)。仿函数是一种类或结构体,类似函数指针,可被用于执行函数调用。在STL中,有三种重要的仿函数类型:算数、关系和逻辑仿函数。
1. 算数仿函数
算数仿函数用于执行基本的数学运算,如加法、减法、乘法和除法。STL提供了几个算数仿函数,包括 plus
、minus
、multiplies
和 divides
。
实战示例:
#include <iostream>
#include <functional>int main() {std::plus<int> add;std::minus<int> subtract;std::multiplies<int> multiply;std::divides<int> divide;int a = 10, b = 5;// 使用算数仿函数执行运算std::cout << "Addition: " << add(a, b) << std::endl;std::cout << "Subtraction: " << subtract(a, b) << std::endl;std::cout << "Multiplication: " << multiply(a, b) << std::endl;std::cout << "Division: " << divide(a, b) << std::endl;return 0;
}
2. 关系仿函数
关系仿函数用于比较两个值的关系,返回布尔值,如 greater
、less
、equal_to
等。这些仿函数可以用于容器的排序和查找算法。
实战示例:
#include <iostream>
#include <functional>int main() {std::greater<int> greater_than;std::less<int> less_than;std::equal_to<int> equal;int x = 10, y = 5;// 使用关系仿函数比较值的关系std::cout << "x > y: " << greater_than(x, y) << std::endl;std::cout << "x < y: " << less_than(x, y) << std::endl;std::cout << "x == y: " << equal(x, y) << std::endl;return 0;
}
3. 逻辑仿函数
逻辑仿函数执行逻辑运算,比如逻辑与、逻辑或和逻辑非。STL中提供了 logical_and
、logical_or
、logical_not
等仿函数。
实战示例:
#include <iostream>
#include <functional>int main() {std::logical_and<bool> logic_and;std::logical_or<bool> logic_or;std::logical_not<bool> logic_not;bool p = true, q = false;// 使用逻辑仿函数执行逻辑运算std::cout << "p && q: " << logic_and(p, q) << std::endl;std::cout << "p || q: " << logic_or(p, q) << std::endl;std::cout << "!p: " << logic_not(p) << std::endl;return 0;
}