阅读量:0
在C++中,functor是一种行为类似函数的对象,可以像函数一样被调用。STL(Standard Template Library)中的很多算法和容器都可以接受functor作为参数,可以通过functor来自定义算法的行为。
以下是一些使用functor配合STL的示例:
- 使用functor排序vector:
#include <iostream> #include <vector> #include <algorithm> // 定义一个比较函数对象 struct Compare { bool operator()(int a, int b) { return a < b; } }; int main() { std::vector<int> vec = {5, 2, 8, 3, 1}; // 使用自定义的比较函数对象对vector进行排序 std::sort(vec.begin(), vec.end(), Compare()); for (int num : vec) { std::cout << num << " "; } return 0; }
- 使用functor进行自定义转换:
#include <iostream> #include <vector> #include <algorithm> // 定义一个转换函数对象 struct Square { int operator()(int num) { return num * num; } }; int main() { std::vector<int> vec = {1, 2, 3, 4, 5}; // 使用自定义的转换函数对象对vector中的元素进行平方操作 std::transform(vec.begin(), vec.end(), vec.begin(), Square()); for (int num : vec) { std::cout << num << " "; } return 0; }
通过使用functor,可以方便地在STL中自定义算法的行为,使代码更加灵活和可重用。