C++11, 14の新機能

ラムダ式

全334コースを10日間無料で

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
このレッスンでは、その場で関数を定義して利用する方法について説明します。
講師:
06:06

字幕

このレッスンでは、その場で関数を定義して利用する方法について説明します。C++11 から、ラムダ式という機能が入り、C++14 で、さらに機能が充実しました。ラムダ式は [ ] 仮引数リスト、そして {} に関数本体を記述します。これがラムダ式です。ラムダ式は関数オブジェクトなので、このまま関数呼び出し演算子を使って呼び出せます。実際に、コンパイルして実行してみます。この通り、ラムダ式の中身が実行されました。ラムダ式を保持するには、auto を使うかまたは、関数テンプレートの引数の型推論を使います。また、返り値の型はreturn から推測されますが明示的に指定することもできます。ここでは引数の型を整数型、返り値の型を整数型とし、受け取った数を 2 倍するだけのラムダ式を変数 l (エル)に入れました。実際に、この l を呼び出して実行してみます。l の引数に与えた 123 が2 倍されて出力されました。また、ラムダ式では、周囲のローカル変数を取り込んで使うことができます。例えば、ここにa = 10 とb = 1000 を定義します。そして、ラムダ式の中から、この a と b を使いたいと思ったとします。 このままでは、ラムダ式の中は違う関数オブジェクトのためa と b を参照することはできません。しかし、キャプチャという機能を使うと、このラムダ式から外側のローカル変数をキャプチャ出来ます。キャプチャの方法はここに = と書くという方法が使えます。こうすると a と b はコピーキャプチャされます。実際に実行してみます。先ほどはエラーでしたが、正しく期待通り実行できました。キャプチャには他に、参照キャプチャがあります。それは、ここに & を書く方法です。この場合、a と b は参照でキャプチャされるため、ラムダ式の中から値を変更できます。また、キャプチャは1つ1つ明示的に行うことができます。例えば a をコピーキャプチャし、b を参照キャプチャしたい時にはa,&b と書きます。また、明示的に変数を指定してキャプチャするとき、初期化子の指定もできます。これは既存の変数のキャプチャだけでなく、新しい変数を作ることもできます。例えば、このようにc = a + b とすると、c はどこにもありませんが、この初期化子の通り、初期化された変数としてラムダ式の中から利用できます。実際に実行してみます。 この通り実行できました。またラムダ式では、引数、返り値型ともに推測させることが可能です。引数は auto で受け取り、返り値型の指定は省略します。この記述で、引数型、返り値型両方とも推論されるので、コードを楽に記述できます。キャプチャは、基本的にローカル変数しかキャプチャ出来ませんが、クラス内では this をキャプチャすることにより、データメンバにもアクセスすることができます。このラムダ式は、関数オブジェクトを値としてその場に記述できるため関数の引数に渡して処理の一部をカスタマイズするといった事に向いています。このレッスンでは、その場で関数を定義して利用する方法について説明しました。

C++11, 14の新機能

C++11,とC++14では大幅に機能追加が行われ、これまでのC++よりも遥かに快適なプログラミングが行えるようになりました。このコースではC++03からC++11とC++14で新たに追加された言語機能や標準ライブラリについて簡単に紹介します。進化したC++を知ってより快適にプログラミングを行うために、ぜひともこのコースをご覧ください。

1時間57分 (43 ビデオ)
現在、カスタマーレビューはありません…
 
ソフトウェア・トピック
価格: 2,990
発売日:2015年10月15日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。