Cpp ラムダ式 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(ラムダ式)
12行: 12行:
  
 
よくわからない名称の技術ですが、STL(Standard Template Liblary)のstd::sortやstd::foreachなどの引数としてプログラムそのものを記述することができる技術です。例えばsortの第三引数には、sortの手続きを行う関数名をしてする必要がありますが、ここにラムダ式を利用することができます。基本的な構造としては[](){}という構造のプログラムになり、[キャプチャ](プログラムの引数)->戻り値{プログラム本体}というような感じです。[](){}のそれぞれのカッコの中の全部が省略可能なので、引数まで省略すると[]{}というのがラムダ式としては最短の構造になります。これでは何にもしないラムダ式になってしまいます。
 
よくわからない名称の技術ですが、STL(Standard Template Liblary)のstd::sortやstd::foreachなどの引数としてプログラムそのものを記述することができる技術です。例えばsortの第三引数には、sortの手続きを行う関数名をしてする必要がありますが、ここにラムダ式を利用することができます。基本的な構造としては[](){}という構造のプログラムになり、[キャプチャ](プログラムの引数)->戻り値{プログラム本体}というような感じです。[](){}のそれぞれのカッコの中の全部が省略可能なので、引数まで省略すると[]{}というのがラムダ式としては最短の構造になります。これでは何にもしないラムダ式になってしまいます。
 +
 +
 +
そもそも、ラムダとは何なのか?ラムダの意味?それは、その昔、関数による計算の記号にλ(lambda:ラムダ)を使っていたことに由来し、関数による計算を行うという技術であることからC++やほかの言語でも、こういったプログラム技術をラムダ式と呼びます。JAVA、LISP、ML、Haskelでも同様にラムダ式という呼び方がされます。
 +
 +
 +
それで…
  
  
20行: 26行:
  
  
という、こういう構造をよく覚える必要があります。[]()->{}ですね。とんでもない記号にも見えてきます。
+
という、こういう構造をよく覚える必要があります。[]()->{}ですね。とんでもない記号にも見えてきます。新しい技術なのだから新しいと感じて当たり前なのです。予告なく似たような記号の組み合わせが全く違う意味で使われる。これがプログラミングを知ったつもりになっている時おとずれる混乱の原因になります。おぼえてしまえば、なんてことはない変な技術なのです。
 +
 
 +
 
 +
特に気になるのが[]の中のキャプチャですね。キャプチャって言われても…意味がいまひとつ分からない。これはラムダ式の関数本体の外側で使っていた変数で、利用するものを指定する部分です。
  
  
 +
文字だけであーだこーだ説明してもピンとこないのでまずはサンプルのプログラムを示してみましょう。最初はキャプチャを省略する例から…
  
 
[[C PlusPlus#C++からの技術|C++]]に戻る
 
[[C PlusPlus#C++からの技術|C++]]に戻る

2017年5月29日 (月) 00:00時点における版



個人用ツール
名前空間

変種
操作
案内
ツールボックス