LoginSignup
2
2

More than 5 years have passed since last update.

高階関数(チラ裏)

Last updated at Posted at 2018-09-08

チラ裏のメモ

簡単に覚えよう、高階関数とは、引数や戻り値に関数を渡せる関数の事。
(関数の単語が三回出てきててめんどくさい。)

//引数に関数オブジェクトを渡す場合。
void func(std::function<void()> f)
{
   f();
}

//戻り値が関数オブジェクトだ。
std::function<void()> func2()
{
   return [](){printf("わん\n");};
}

int main()
{
   func([](){printf("にゃおーん\n");});

   std::function<void()> ff = func2();
   ff();

   //これ楽しい
   func( func2() );

   return 0;
}

関数ポインタとか渡そうと思ったら書き方を忘れている・・・(汗
とりあえずこっちで。
((追記:ちなみに、C言語では第1級関数のサポートが無いので関数ポインタを使った所で高階関数ということにはならないらしい。こういう厳密な定義ってめんどくさいね。だけど、大事なことは大体めんどくさいんだってさ...。))

で、上記のような意味のない関数では、なかなか腑に落ちないので以下。

int main()
{
   int arr[] = {1,3,4,5,6,7};

   //これは高階関数になってる
   std::sort(std::begin(arr)
             , std::end(arr)
             , [](int a, int b){return a > b; });

   // ログで確認
   for(const auto &n : arr)
   {
      std::cout << n << std::endl;
   }
    return 0;
}
2
2
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2