Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
C++ニュース

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による型推論が利用できるため、テンプレートのように汎用的で整ったプログラムを書きやすくなります。

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

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

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

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

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

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

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

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

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


Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

関連記事
C++RAD Studio事例

大規模なC++プロジェクトのビルド時間をTwineCompileで高速化

C++RAD Studio

C++BuilderでC++17 構造化束縛(Structured Bindings)の使用方法を学ぶ

C++RAD Studio

C++Builderで最新C++ constexprの使用方法を学ぶ

C++RAD Studio

C++Builderで戻り値の型推論(auto)の使用方法を学ぶ

コメント

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

IN THE ARTICLES