Advertisement
copyrat90

C++ lambda and functor

Jan 2nd, 2023 (edited)
1,215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.87 KB | None | 0 0
  1. // x를 입력하여, "a에 x를 더해 반환하는 함수"를 반환하는 Adder 구현하기
  2. #include <iostream>
  3. #include <functional>
  4.  
  5. // 방법 1)  고차 함수(Higher-order function) 이용하기
  6. auto Adder1(int x) {
  7.     return [x](int a){ return a + x; };
  8. }
  9.  
  10. // 방법 2)  함수 객체(Functor) 이용하기
  11. class Adder2 {
  12.     int _x;
  13. public:
  14.     Adder2(int x) : _x(x) {}
  15.     int operator()(int a) const { return a + _x; }
  16. };
  17.  
  18. int main() {
  19.     // 방법 1)  `add111`은 int를 넣어서 int를 반환하는 함수 (람다)
  20.     auto add111 = Adder1(111);
  21.     std::cout << add111(888) << '\n';
  22.  
  23.     // 방법 2)  `add888`은 Adder2 타입의 객체
  24.     Adder2 add888 = Adder2(888);
  25.     std::cout << add888(111) << '\n';
  26.  
  27.     // 둘 다 std::function<int(int)> 에 저장 가능
  28.     std::function<int(int)> func;
  29.     func = add111;
  30.     func = add888;
  31. }
  32.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement