함수 개체입니다.
A 함수 개체, 또는 functor, operator ()를 구현 하는 형식입니다.이 연산자 라고는 연산자를 호출 또는 경우에 따라는 응용 프로그램 연산자.표준 템플릿 라이브러리 함수 개체 기본적으로 정렬 되는 알고리즘 및 컨테이너에 대 한 조건으로 사용 합니다.
두 가지 주요 장점이 직선 함수 호출 함수 개체를 제공합니다.첫 번째 함수 개체 상태 포함 될 수 있습니다.두 번째 함수 개체는 형식이 며 따라서 템플릿 매개 변수로 사용할 수 있습니다.
함수 개체 만들기
함수 개체를 생성 하는 형식을 만든 다음 operator (), 같이 구현할:
class Functor
{
public:
int operator()(int a, int b)
{
return a < b;
}
};
int main()
{
Functor f;
int a = 5;
int b = 7;
int ans = f(a, b);
}
마지막 줄은 main 함수를 함수 개체를 호출 하는 방법을 보여 줍니다.이 호출 하는 함수를 호출 동작은 하지만 실제로 Functor 형식의 operator () 호출.함수 개체 및 함수 호출 간에이 유사 용어 함수 개체는 제공 된에 대 한 것입니다.
함수 개체와 컨테이너
표준 템플릿 라이브러리에 있는 함수 개체에 포함 되어 있는 <functional> 헤더 파일입니다.한 이러한 함수 개체 컨테이너에 대 한 정렬 조건으로 사용합니다.예를 들어 있는 set 컨테이너는 다음과 같이 선언 된:
template <
class Key,
class Traits=less<Key>,
class Allocator=allocator<Key> >
class set
두 번째 템플릿 인수가 함수 개체는 less.이 함수 개체를 반환 합니다. true 첫 번째 매개 변수를 전달 하는 경우에 그 작은 보다 두 번째 매개 변수로 전달 합니다.일부 컨테이너의 요소를 정렬 되므로 컨테이너는 두 요소를 비교 하는 방법이 필요로이 함수 개체를 사용 하 여 수행 됩니다.사용자 고유의 함수 개체를 만들고 서식 파일 목록에 컨테이너를 지정 하 여 정렬 하는 컨테이너에 대 한 조건을 정의할 수 있습니다.
함수 개체 및 알고리즘
또 기능적 개체의 알고리즘에 있습니다.예를 들어 있는 remove_if 알고리즘은 다음과 같이 선언 된:
template<class ForwardIterator, class Predicate>
ForwardIterator remove_if(
ForwardIterator _First,
ForwardIterator _Last,
Predicate _Pred
);
마지막 인수를 remove_if 부울 값을 반환 하는 함수 개체입니다 (있는 조건자).그 결과 함수 개체의 경우 true, 반복기가 액세스 중인 컨테이너에서 해당 요소를 제거 하 고 _First 및 _Last.선언 된 함수 개체를 사용할 수 있습니다의 <functional> 머리글의 인수에 대 한 _Pred 하거나 직접 만들 수 있습니다.