C에서 함수 객체 또는 unfunctors는 operator()
정의하는 클래스의 인스턴스입니다. 이를 통해 객체를 함수 인 것처럼 사용할 수 있습니다. functor를 사용하려면 먼저 operator()
메소드가있는 클래스를 정의한 다음 해당 클래스의 인스턴스를 만듭니다. 다음은 사용법을 설명하는 간단한 예입니다.
<code class="cpp">#include <iostream> class Multiply { public: int operator()(int x, int y) { return x * y; } }; int main() { Multiply mul; // Create a functor instance std::cout </iostream></code>
이 예에서 Multiply
operator()
메소드가있는 Functor 클래스입니다. Multiply
의 인스턴스 mul
만들 때 12
출력하는 mul(3, 4)
과 같은 함수와 같은 것을 호출 할 수 있습니다.
C에서 정기적 인 기능을 통해 기능을 사용하면 몇 가지 이점이 있습니다.
std::sort
또는 std::find_if
와 같은 많은 표준 라이브러리 알고리즘은 기능을 인수로 취할 수있어보다 유연하고 강력하게 만들 수 있습니다. C에서 사용자 정의 functor를 구현하려면 operator()
메소드로 클래스를 정의해야합니다. 다음은 다음과 같은 사용자 지정 기능의 예입니다.
<code class="cpp">#include <iostream> class CallCounter { private: int count; public: CallCounter() : count(0) {} void operator()() { count; std::cout </iostream></code>
이 예에서 CallCounter
는 개인 count
멤버 변수를 유지하는 사용자 정의 기능입니다. unfunctor가 호출 될 때마다 카운트를 증가시키고 현재 수를 인쇄합니다.
기능은 다양한 목적으로 C 프로그래밍에 널리 사용됩니다. 몇 가지 일반적인 사용 사례는 다음과 같습니다.
사용자 정의 정렬 : functors는 std::sort
과 함께 사용하여 사용자 정의 정렬 기준을 정의 할 수 있습니다. 예를 들어, 특정 속성을 기반으로 객체의 벡터를 정렬 할 수 있습니다.
<code class="cpp">struct Person { std::string name; int age; }; struct SortByAge { bool operator()(const Person& a, const Person& b) { return a.age people = {...}; std::sort(people.begin(), people.end(), SortByAge());</code>
알고리즘 사용자 정의 : std::find_if
, std::accumulate
및 std::transform
와 같은 많은 표준 라이브러리 알고리즘은 기능을 사용자 정의하기 위해 functors를 가져갈 수 있습니다.
<code class="cpp">std::vector<int> numbers = {1, 2, 3, 4, 5}; auto even = std::find_if(numbers.begin(), numbers.end(), [](int x) { return x % 2 == 0; });</int></code>
이 예제는 기능이 C 코드의 유연성과 표현성을 향상시켜 현대 C 프로그래밍에서 강력한 도구가되는 방법을 보여줍니다.
위 내용은 C에서 기능 객체 (functors)를 어떻게 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!