Make Unreal REAL.
article thumbnail
Published 2023. 1. 21. 17:21
펑터(Functor) C++/기타

 

함수처럼 사용할 수 있는 객체이며 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
profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그