サイトアイコン Embarcadero RAD Studio, Delphi, & C++Builder Blogs

C++BuilderでC++17ラムダ式の使用方法を学ぶ

lambda expressions

現在のC++言語は、C++11、C++14、C++17などのC++標準規格のバージョンアップを通して、以前のC++言語と比べて大きな機能拡張が行われてます。C++のプログラムコードの可読性、保守性、表現力をより高めるためには、最新であるC++17の言語仕様や標準ライブラリの使用方法を抑えておく必要があります。このブログでは、その機能の一つである「ラムダ式」の使用方法を説明します。

ラムダ式は、C++11で初めて登場し、C++14ではジェネリックスラムダ、C++17では*thisのキャプチャのサポートなど新しい機能が追加され、最新のC++17では、以前のラムダ式よりも使いやすく、さらに強力になりました。

ラムダ式とは、関数のように振舞う関数(クロージャ)オブジェクトを作成することができ、スコープ内の変数をキャプチャできます。(ラムダ式は、記述されている関数のローカル変数をキャプチャとして使用できます。)

ラムダ式の基本的な構文は、以下の通りです。

[キャプチャ](仮引数リスト)->戻り値の型{ 複合文};

またC++14からジェネリックラムダが使用可能なので、パラメータ(関数の仮引数)型にautoによる型推論が利用できるため、テンプレートのように汎用的で整ったプログラムを書きやすくなります。

実際のコード例を見てみましょう。

[crayon-67405478baa17030377565/]

上記のコードのうち、次の行に注目してください。

[crayon-67405478baa23489439322/]

このコードでは、パラメータをauto型で定義しているので、文字列と同様にプラス演算子(+)を定義しているものであれば、どのような型でも動作します。

なお、このプログラムの例では、ラムダ式を使用して、コンソールに結果を出力しています。

[crayon-67405478baa26140527935/]

ラムダ式を利用すると変数に格納する必要はなく、下記のコード例のように括弧の後ろに(2, 2)のパラメータとして数値を直接定義できます。

[crayon-67405478baa27398935036/]

ラムダ式をもっと詳しく知りたい方は、以下のドキュメントを参考ください。

このブログで紹介しましたサンプルコードは、こちらからダウンロードできます。

C++17では、古いC++言語で使用できた機能や標準ライブラリが非推奨、あるいは廃止されているものもありますが、その分プログラムをより書きやすくするために新しく追加されたり、改良されている機能も多くあります。今回紹介したラムダ式もその一つです。

C++Builder 10.4では、最新のC++17の言語仕様をサポートしており、C++17の新機能もすぐに試せます。製品の詳細は、こちらを参照してください。

モバイルバージョンを終了