함수처럼 사용할 수 있는 객체이며 Function Object (함수 객체)라고도 불린다.
STL에서는 sort 함수 등에 사용되는 greater, less 등의 기본 functor가 제공된다.
Lambda 식 함수도 실제로는 Functor이다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Number
{
private:
int m_Num;
public:
void operator()(int num) { m_Num = num; }
int operator()() { return m_Num; }
};
class MyComparator
{
public:
bool operator()(const int& a, const int& b) { return a < b; }
};
void main()
{
Number number;
// void operator()(int num)
number(10);
// int operator()()
cout << number() << endl;
vector<int> v = {3, 5, 2, 4, 1};
MyComparator myComparator;
// bool operator()(const int& a, const int& b)
sort(v.begin(), v.end(), myComparator);
for (int e : v)
cout << e << ' ';
cout << endl;
// Lambda 식 함수도 실제로는 Functor이다.
sort(v.begin(), v.end(), [](const int& a, const int& b) -> bool { return a > b; });
for (int e : v)
cout << e << ' ';
}
출력
10
1 2 3 4 5
5 4 3 2 1
'C++ > 기타' 카테고리의 다른 글
실수를 비교하는 방법 (0) | 2023.01.30 |
---|---|
람다 식(Lambda expression) (0) | 2023.01.21 |
템플릿(Template) (0) | 2023.01.20 |
깊은 복사와 얕은 복사 (0) | 2023.01.20 |
std::iterator와 std::reverse_iterator (0) | 2023.01.20 |