
|
221
6 章
ラムダ式
ラムダ式(lambda expression) ラムダ(lambdas) は、これまでの C++ プログラミング
を根底から変えてしまうような革新的なものです。言語に新たな表現力をもたらす訳でもないのに、
やや意外に思えます。ラムダでできることはすべて、入力タイプ量は増えますが、同じことを手動
でも記述できます。しかし、ラムダは関数オブジェクトを作成する簡便な方法であり、日々の C++
ソフトウェア開発に大きく影響します。ラムダがなければ STL の「_if」アルゴリズムはごく単純な
判定関数程度に留まるでしょうが(std::find_if、std::remove_if、std::count_if など)、ラ
ムダを使用すれば複雑な条件式を活用できます。比較関数をカスタマイズするアルゴリズムも同様
です(std::sort、std::nth_element、std::lower_bound など)。STL 以外でも、ラムダを用い
れば std::unique_ptr や std::shared_ptr のカスタムデリータをその場で作成でき(項目 18、項
目 19 を参照)、スレッド API の条件変数の判定関数もほぼそのまま記述できます(項目 39 を参照)。
標準ライブラリ外でも、コールバック関数の直接的な指定、インタフェース変換関数、1 度だけ呼び
出すコンテクスト依存関数などが、ラムダにより実現可能になります。ラムダは C++ をもっと楽し
いプログラミング言語に変貌させるのです。 ...