在C++中,functor是一種行為類似函數的對象,可以像函數一樣被調用。STL(Standard Template Library)中的很多算法和容器都可以接受functor作為參數,可以通過functor來自定義算法的行為。
以下是一些使用functor配合STL的示例:
#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;
}
#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中自定義算法的行為,使代碼更加靈活和可重用。