Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // x를 입력하여, "a에 x를 더해 반환하는 함수"를 반환하는 Adder 구현하기
- #include <iostream>
- #include <functional>
- // 방법 1) 고차 함수(Higher-order function) 이용하기
- auto Adder1(int x) {
- return [x](int a){ return a + x; };
- }
- // 방법 2) 함수 객체(Functor) 이용하기
- class Adder2 {
- int _x;
- public:
- Adder2(int x) : _x(x) {}
- int operator()(int a) const { return a + _x; }
- };
- int main() {
- // 방법 1) `add111`은 int를 넣어서 int를 반환하는 함수 (람다)
- auto add111 = Adder1(111);
- std::cout << add111(888) << '\n';
- // 방법 2) `add888`은 Adder2 타입의 객체
- Adder2 add888 = Adder2(888);
- std::cout << add888(111) << '\n';
- // 둘 다 std::function<int(int)> 에 저장 가능
- std::function<int(int)> func;
- func = add111;
- func = add888;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement