[C++] 함수 객체

**C++**은 C 의 95%를 포함하고있다.

그러나 그 대체본이 거의다 존재한다.

C++ 을 사용한다면 성능 문제를 제외하고, **C++**을 사용하는게 맞다.

C에서의 시간측정은 time.hclock() 함수의 차이로 구할수있고

C++chrono 라이브러리를 사용하면된다.

이렇듯 대체본이 존재하는데,

C 의 함수포인터를 C++ 에서는 함수객체로 대신한다.

이는 함수포인터의 비 인라인화를 대체하기위함이다.

함수객체의 필요성과 사용법은 다른 블로그에도 많으니 가서 찾고

여기서는 함수객체를 인자로 받는법을 설명한다.

#include<iostream>
#include<algorithm>
using namespace std;
struct FClass{
public:
 void operator() ()const{
  cout << "Hello, World" << endl;
 }
};
template<class _Pr>
void Foo(_Pr fred) {
 fred();
}
int main() {
 Foo(FClass());
 return 0;
}

위는 간단한 함수객체를 만들고,

그 함수객체를 인수로 받는 Foo라는 함수를 정의한다.

위에서 보듯이 함수객체를 인자로 받는법은 template 을 이용해 구현한다.

인터넷에 찾아도 안나오길래 algorithmsort 선언부를 봤더니 답이 나왔다!!