그냥 게임개발자
operator() 본문
operator()는 C++에서 함수 호출 연산자라고 불립니다.
객체를 함수처럼 호출할 수 있게 해주는 연산자 오버로딩이라고 보시면 될 것 같습니다.
이 연산자를 클래스나 구조체에서 오버로딩을 함으로써 해당 타입의 객체에 대한 "호출 가능한 객체" 또는 "함수 객체"를 만들 수 있습니다.
이는 함수 객체나 우선순위 큐 정렬 등에 사용될 수 있습니다.
한마디로 기존에 존재하던 연산자들 있죠?
=, ==, >, ++, 이러한 것들을 내가 원하는 다른 기능들로 커스텀 할 수 있다는 이야기입니다.
일단 원형부터 살펴보죠.
class ClassName
{
public:
반환타입 operator()(매개변수)
{
// 구현
}
};
반환 타입은 함수 호출 시에 반환되는 데이터 타입입니다.
매개변수는 함수가 받아들일 때의 매개변수들입니다.
함수 객체
class Adder
{
public:
int operator()(int a, int b)
{
return a + b;
}
};
int main()
{
Adder adder;
cout << adder(3, 4);
return 0;
}

결과값 7이 나왔다.
이 코드에서 볼수 있듯이 Adder클래스는 operator()를 오버로딩해서 두 정수를 받아 그 합을 반환하는 형태입니다.
adder 객체는 마치 함수처럼 호출이 될 수 있고 adder(3, 4)는 7을 반환한 것이죠.
우선순위큐의 비교 연산자
struct Compare
{
bool operator()(const int& a, const int& b)
{
return a > b; // MinHeap
}
};
priority_queue<int, vector<int>, Compare> pq;
Compare는 int 타입의 두 요소를 비교해서 첫 번째 요소가 두 번째 요소보다 큰 경우 true를 반환합니다.
이러한 비교 방식을 기준으로 priority_queue는 내부적으로 요소를 정렬해요.
여기서 Compare함수 객체는 MinHeap(최소 힙) 구조의 우선 순위 큐를 만드는데 사용이 됩니다.
저번 포스팅에서 말씀 드렸듯이!! 우선순위 큐에서는 >가 오름차순 <가 내림차순입니다.
sort 기준으로는 반대에요 <가 오름차순 >가 내림차순입니다 원래는.
우선순위 큐만 달라요
'내 개인적인 공부 > 자료구조' 카테고리의 다른 글
primitive 타입, reference 타입 (0) | 2024.04.14 |
---|---|
자료구조 시간 복잡도 (0) | 2024.04.14 |
구조체 우선순위 큐 (0) | 2024.04.14 |
priority queue (0) | 2024.04.14 |
vector에 struct 정렬 (0) | 2024.04.14 |