{"id":1971,"date":"2024-06-22T23:26:58","date_gmt":"2024-06-22T23:26:58","guid":{"rendered":"https:\/\/www.w3computing.com\/articles\/?p=1971"},"modified":"2024-06-22T23:27:12","modified_gmt":"2024-06-22T23:27:12","slug":"how-to-work-with-lambda-expressions-in-cpp","status":"publish","type":"post","link":"https:\/\/www.w3computing.com\/articles\/how-to-work-with-lambda-expressions-in-cpp\/","title":{"rendered":"How to Work with Lambda Expressions in C++"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lambda expressions, introduced in C++11, have revolutionized the way we write and use functions in C++. They provide a concise and convenient way to create anonymous function objects at the point where they are needed. This tutorial will delve into the details of working with lambda expressions in C++, targeting non-beginner programmers who already have a solid understanding of the language but want to deepen their knowledge of this powerful feature.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What Are Lambda Expressions?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A lambda expression in C++ is essentially a way to define an anonymous function, i.e., a function without a name. Lambda expressions can be used wherever function objects are required, such as in algorithms, callbacks, or in custom function templates. They allow you to write inline functions in a compact form, enhancing code readability and maintainability.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Syntax of Lambda Expressions<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The general syntax of a lambda expression is:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\">&#91;capture](parameters) -&gt; return_type { body }<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li><code>capture<\/code>: Specifies which variables from the surrounding scope are to be captured and made available inside the lambda.<\/li>\n\n\n\n<li><code>parameters<\/code>: Specifies the parameters passed to the lambda, similar to regular functions.<\/li>\n\n\n\n<li><code>return_type<\/code>: Specifies the return type of the lambda. This is optional if the return type can be inferred.<\/li>\n\n\n\n<li><code>body<\/code>: The code that defines the behavior of the lambda.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Basic Example<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s start with a simple example to illustrate the basic usage of a lambda expression:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;iostream&gt;<\/span><\/span>\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-keyword\">auto<\/span> add = &#91;](<span class=\"hljs-keyword\">int<\/span> a, <span class=\"hljs-keyword\">int<\/span> b) -&gt; <span class=\"hljs-keyword\">int<\/span> {\n        <span class=\"hljs-keyword\">return<\/span> a + b;\n    };\n\n    <span class=\"hljs-keyword\">int<\/span> result = add(<span class=\"hljs-number\">5<\/span>, <span class=\"hljs-number\">3<\/span>);\n    <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; <span class=\"hljs-string\">\"Result: \"<\/span> &lt;&lt; result &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>; <span class=\"hljs-comment\">\/\/ Output: Result: 8<\/span>\n\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">In this example, we define a lambda expression <code>add<\/code> that takes two integers and returns their sum. We then call this lambda with the arguments 5 and 3 and print the result.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Capturing Variables<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">One of the key features of lambda expressions is the ability to capture variables from their enclosing scope. There are several ways to capture variables:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Capture by Value<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">When you capture a variable by value, the lambda makes a copy of the variable. Changes to the variable inside the lambda do not affect the original variable outside the lambda.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;iostream&gt;<\/span><\/span>\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-keyword\">int<\/span> x = <span class=\"hljs-number\">10<\/span>;\n    <span class=\"hljs-keyword\">auto<\/span> printX = &#91;x]() {\n        <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; <span class=\"hljs-string\">\"x: \"<\/span> &lt;&lt; x &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>;\n    };\n\n    x = <span class=\"hljs-number\">20<\/span>;\n    printX(); <span class=\"hljs-comment\">\/\/ Output: x: 10<\/span>\n\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Capture by Reference<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">When you capture a variable by reference, the lambda has access to the original variable. Changes to the variable inside the lambda affect the original variable.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;iostream&gt;<\/span><\/span>\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-keyword\">int<\/span> x = <span class=\"hljs-number\">10<\/span>;\n    <span class=\"hljs-keyword\">auto<\/span> printX = &#91;&amp;x]() {\n        <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; <span class=\"hljs-string\">\"x: \"<\/span> &lt;&lt; x &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>;\n    };\n\n    x = <span class=\"hljs-number\">20<\/span>;\n    printX(); <span class=\"hljs-comment\">\/\/ Output: x: 20<\/span>\n\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Capture by Value and Reference<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">You can capture multiple variables, some by value and some by reference.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;iostream&gt;<\/span><\/span>\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-keyword\">int<\/span> x = <span class=\"hljs-number\">10<\/span>;\n    <span class=\"hljs-keyword\">int<\/span> y = <span class=\"hljs-number\">20<\/span>;\n    <span class=\"hljs-keyword\">auto<\/span> printXY = &#91;x, &amp;y]() {\n        <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; <span class=\"hljs-string\">\"x: \"<\/span> &lt;&lt; x &lt;&lt; <span class=\"hljs-string\">\", y: \"<\/span> &lt;&lt; y &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>;\n    };\n\n    x = <span class=\"hljs-number\">30<\/span>;\n    y = <span class=\"hljs-number\">40<\/span>;\n    printXY(); <span class=\"hljs-comment\">\/\/ Output: x: 10, y: 40<\/span>\n\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Capture All Variables<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">You can also capture all variables from the enclosing scope, either by value or by reference.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Capture all by value:<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;iostream&gt;<\/span><\/span>\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-keyword\">int<\/span> x = <span class=\"hljs-number\">10<\/span>;\n    <span class=\"hljs-keyword\">int<\/span> y = <span class=\"hljs-number\">20<\/span>;\n    <span class=\"hljs-keyword\">auto<\/span> printXY = &#91;=]() {\n        <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; <span class=\"hljs-string\">\"x: \"<\/span> &lt;&lt; x &lt;&lt; <span class=\"hljs-string\">\", y: \"<\/span> &lt;&lt; y &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>;\n    };\n\n    x = <span class=\"hljs-number\">30<\/span>;\n    y = <span class=\"hljs-number\">40<\/span>;\n    printXY(); <span class=\"hljs-comment\">\/\/ Output: x: 10, y: 20<\/span>\n\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>Capture all by reference:<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;iostream&gt;<\/span><\/span>\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-keyword\">int<\/span> x = <span class=\"hljs-number\">10<\/span>;\n    <span class=\"hljs-keyword\">int<\/span> y = <span class=\"hljs-number\">20<\/span>;\n    <span class=\"hljs-keyword\">auto<\/span> printXY = &#91;&amp;]() {\n        <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; <span class=\"hljs-string\">\"x: \"<\/span> &lt;&lt; x &lt;&lt; <span class=\"hljs-string\">\", y: \"<\/span> &lt;&lt; y &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>;\n    };\n\n    x = <span class=\"hljs-number\">30<\/span>;\n    y = <span class=\"hljs-number\">40<\/span>;\n    printXY(); <span class=\"hljs-comment\">\/\/ Output: x: 30, y: 40<\/span>\n\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Mixed Capture Modes<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">You can mix capturing all variables by reference while capturing specific variables by value.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;iostream&gt;<\/span><\/span>\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-keyword\">int<\/span> x = <span class=\"hljs-number\">10<\/span>;\n    <span class=\"hljs-keyword\">int<\/span> y = <span class=\"hljs-number\">20<\/span>;\n    <span class=\"hljs-keyword\">auto<\/span> printXY = &#91;=, &amp;y]() {\n        <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; <span class=\"hljs-string\">\"x: \"<\/span> &lt;&lt; x &lt;&lt; <span class=\"hljs-string\">\", y: \"<\/span> &lt;&lt; y &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>;\n    };\n\n    x = <span class=\"hljs-number\">30<\/span>;\n    y = <span class=\"hljs-number\">40<\/span>;\n    printXY(); <span class=\"hljs-comment\">\/\/ Output: x: 10, y: 40<\/span>\n\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Lambda Expressions with STL Algorithms<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">One of the most powerful uses of lambda expressions is in conjunction with the Standard Template Library (STL) algorithms. Lambda expressions can be used as predicates or function objects in algorithms like <code>std::sort<\/code>, <code>std::for_each<\/code>, <code>std::find_if<\/code>, etc.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example: Using Lambda with std::sort<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;iostream&gt;<\/span><\/span>\n<span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;vector&gt;<\/span><\/span>\n<span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;algorithm&gt;<\/span><\/span>\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">vector<\/span>&lt;<span class=\"hljs-keyword\">int<\/span>&gt; numbers = {<span class=\"hljs-number\">5<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">8<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">3<\/span>};\n\n    <span class=\"hljs-built_in\">std<\/span>::sort(numbers.begin(), numbers.end(), &#91;](<span class=\"hljs-keyword\">int<\/span> a, <span class=\"hljs-keyword\">int<\/span> b) {\n        <span class=\"hljs-keyword\">return<\/span> a &lt; b;\n    });\n\n    <span class=\"hljs-keyword\">for<\/span> (<span class=\"hljs-keyword\">int<\/span> n : numbers) {\n        <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; n &lt;&lt; <span class=\"hljs-string\">\" \"<\/span>;\n    }\n    <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>; <span class=\"hljs-comment\">\/\/ Output: 1 2 3 5 8<\/span>\n\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Example: Using Lambda with std::for_each<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;iostream&gt;<\/span><\/span>\n<span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;vector&gt;<\/span><\/span>\n<span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;algorithm&gt;<\/span><\/span>\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">vector<\/span>&lt;<span class=\"hljs-keyword\">int<\/span>&gt; numbers = {<span class=\"hljs-number\">5<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">8<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">3<\/span>};\n\n    <span class=\"hljs-built_in\">std<\/span>::for_each(numbers.begin(), numbers.end(), &#91;](<span class=\"hljs-keyword\">int<\/span> n) {\n        <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; n &lt;&lt; <span class=\"hljs-string\">\" \"<\/span>;\n    });\n    <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>; <span class=\"hljs-comment\">\/\/ Output: 5 2 8 1 3<\/span>\n\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Example: Using Lambda with std::find_if<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;iostream&gt;<\/span><\/span>\n<span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;vector&gt;<\/span><\/span>\n<span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;algorithm&gt;<\/span><\/span>\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">vector<\/span>&lt;<span class=\"hljs-keyword\">int<\/span>&gt; numbers = {<span class=\"hljs-number\">5<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">8<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">3<\/span>};\n\n    <span class=\"hljs-keyword\">auto<\/span> it = <span class=\"hljs-built_in\">std<\/span>::find_if(numbers.begin(), numbers.end(), &#91;](<span class=\"hljs-keyword\">int<\/span> n) {\n        <span class=\"hljs-keyword\">return<\/span> n &gt; <span class=\"hljs-number\">3<\/span>;\n    });\n\n    <span class=\"hljs-keyword\">if<\/span> (it != numbers.end()) {\n        <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; <span class=\"hljs-string\">\"Found a number greater than 3: \"<\/span> &lt;&lt; *it &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>; <span class=\"hljs-comment\">\/\/ Output: Found a number greater than 3: 5<\/span>\n    } <span class=\"hljs-keyword\">else<\/span> {\n        <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; <span class=\"hljs-string\">\"No number greater than 3 found\"<\/span> &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>;\n    }\n\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Generic Lambdas<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Starting from C++14, lambda expressions can be generic, which means they can accept parameters of any type without explicitly specifying the types. This is achieved using the <code>auto<\/code> keyword.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example: Generic Lambda<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-12\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;iostream&gt;<\/span><\/span>\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-keyword\">auto<\/span> print = &#91;](<span class=\"hljs-keyword\">auto<\/span> value) {\n        <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; value &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>;\n    };\n\n    print(<span class=\"hljs-number\">10<\/span>);        <span class=\"hljs-comment\">\/\/ Output: 10<\/span>\n    print(<span class=\"hljs-number\">3.14<\/span>);      <span class=\"hljs-comment\">\/\/ Output: 3.14<\/span>\n    print(<span class=\"hljs-string\">\"Hello\"<\/span>);   <span class=\"hljs-comment\">\/\/ Output: Hello<\/span>\n\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-12\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Example: Generic Lambda with Multiple Parameters<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-13\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;iostream&gt;<\/span><\/span>\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-keyword\">auto<\/span> add = &#91;](<span class=\"hljs-keyword\">auto<\/span> a, <span class=\"hljs-keyword\">auto<\/span> b) {\n        <span class=\"hljs-keyword\">return<\/span> a + b;\n    };\n\n    <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; add(<span class=\"hljs-number\">5<\/span>, <span class=\"hljs-number\">3<\/span>) &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>;       <span class=\"hljs-comment\">\/\/ Output: 8<\/span>\n    <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; add(<span class=\"hljs-number\">2.5<\/span>, <span class=\"hljs-number\">1.5<\/span>) &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>;   <span class=\"hljs-comment\">\/\/ Output: 4<\/span>\n    <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; add(<span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">string<\/span>(<span class=\"hljs-string\">\"Hello \"<\/span>), <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">string<\/span>(<span class=\"hljs-string\">\"World\"<\/span>)) &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>; <span class=\"hljs-comment\">\/\/ Output: Hello World<\/span>\n\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-13\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Stateful Lambdas<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lambdas can also maintain state across multiple calls by using the <code>mutable<\/code> keyword. By default, captured variables are treated as <code>const<\/code> within the lambda body. To modify the captured variables, the lambda must be marked as <code>mutable<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example: Mutable Lambda<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-14\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;iostream&gt;<\/span><\/span>\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-keyword\">int<\/span> counter = <span class=\"hljs-number\">0<\/span>;\n\n    <span class=\"hljs-keyword\">auto<\/span> increment = &#91;counter]() <span class=\"hljs-keyword\">mutable<\/span> {\n        <span class=\"hljs-keyword\">return<\/span> ++counter;\n    };\n\n    <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; increment() &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>; <span class=\"hljs-comment\">\/\/ Output: 1<\/span>\n    <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; increment() &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>; <span class=\"hljs-comment\">\/\/ Output: 2<\/span>\n    <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; increment() &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>; <span class=\"hljs-comment\">\/\/ Output: 3<\/span>\n\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-14\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">In this example, the <code>counter<\/code> variable is captured by value, but since the lambda is marked as <code>mutable<\/code>, it can modify the captured variable.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Lambda Expressions in Classes and Structs<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lambdas can be used inside classes and structs, allowing you to define small helper functions in a concise way.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example: Lambda in a Class<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-15\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;iostream&gt;<\/span><\/span>\n<span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;vector&gt;<\/span><\/span>\n<span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;algorithm&gt;<\/span><\/span>\n\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">NumberCollection<\/span> {<\/span>\n<span class=\"hljs-keyword\">public<\/span>:\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">addNumber<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">int<\/span> number)<\/span> <\/span>{\n        numbers.push_back(number);\n    }\n\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">printNumbers<\/span><span class=\"hljs-params\">()<\/span> <span class=\"hljs-keyword\">const<\/span> <\/span>{\n        <span class=\"hljs-built_in\">std<\/span>::for_each(numbers.begin(), numbers.end(), &#91;](<span class=\"hljs-keyword\">int<\/span> n) {\n            <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; n &lt;&lt; <span class=\"hljs-string\">\" \"<\/span>;\n        });\n        <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>;\n    }\n\n<span class=\"hljs-keyword\">private<\/span>:\n    <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">vector<\/span>&lt;<span class=\"hljs-keyword\">int<\/span>&gt; numbers;\n};\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    NumberCollection collection;\n    collection.addNumber(<span class=\"hljs-number\">1<\/span>);\n    collection.addNumber(<span class=\"hljs-number\">2<\/span>);\n    collection.addNumber(<span class=\"hljs-number\">3<\/span>);\n\n    collection.printNumbers(); <span class=\"hljs-comment\">\/\/ Output: 1 2 3<\/span>\n\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-15\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Capturing this Pointer<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">When a lambda is defined inside a member function, you can capture the <code>this<\/code> pointer to access members of the class.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example: Capturing this Pointer<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-16\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;iostream&gt;<\/span><\/span>\n<span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;vector&gt;<\/span><\/span>\n<span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;algorithm&gt;<\/span><\/span>\n\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">NumberCollection<\/span> {<\/span>\n<span class=\"hljs-keyword\">public<\/span>:\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">addNumber<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">int<\/span> number)<\/span> <\/span>{\n        numbers.push_back(number);\n    }\n\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">printNumbers<\/span><span class=\"hljs-params\">()<\/span> <span class=\"hljs-keyword\">const<\/span> <\/span>{\n        <span class=\"hljs-built_in\">std<\/span>::for_each(numbers.begin(), numbers.end(), &#91;<span class=\"hljs-keyword\">this<\/span>](<span class=\"hljs-keyword\">int<\/span> n) {\n            <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; n * multiplier &lt;&lt; <span class=\"hljs-string\">\" \"<\/span>;\n        });\n        <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>;\n    }\n\n<span class=\"hljs-keyword\">private<\/span>:\n    <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">vector<\/span>&lt;<span class=\"hljs-keyword\">int<\/span>&gt; numbers;\n    <span class=\"hljs-keyword\">int<\/span> multiplier = <span class=\"hljs-number\">2<\/span>;\n};\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    NumberCollection collection;\n    collection.addNumber(<span class=\"hljs-number\">1<\/span>);\n    collection.addNumber(<span class=\"hljs-number\">2<\/span>);\n    collection.addNumber(<span class=\"hljs-number\">3<\/span>);\n\n    collection.printNumbers(); <span class=\"hljs-comment\">\/\/ Output: 2 4 6<\/span>\n\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-16\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">In this example, the lambda captures the <code>this<\/code> pointer to access the <code>multiplier<\/code> member of the <code>NumberCollection<\/code> class.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Advanced Lambda Features<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Recursive Lambdas<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Lambdas can also be recursive, although this requires some workarounds because lambdas do not have a name to refer to themselves. One common approach is to use a <code>std::function<\/code> to enable recursion.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example: Recursive Lambda<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-17\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;iostream&gt;<\/span><\/span>\n<span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;functional&gt;<\/span><\/span>\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-built_in\">std<\/span>::function&lt;<span class=\"hljs-keyword\">int<\/span>(<span class=\"hljs-keyword\">int<\/span>)&gt; factorial = &#91;&amp;](<span class=\"hljs-keyword\">int<\/span> n) {\n        <span class=\"hljs-keyword\">if<\/span> (n &lt;= <span class=\"hljs-number\">1<\/span>) <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">1<\/span>;\n        <span class=\"hljs-keyword\">else<\/span> <span class=\"hljs-keyword\">return<\/span> n * factorial(n - <span class=\"hljs-number\">1<\/span>);\n    };\n\n    <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; <span class=\"hljs-string\">\"Factorial of 5: \"<\/span> &lt;&lt; factorial(<span class=\"hljs-number\">5<\/span>) &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>; <span class=\"hljs-comment\">\/\/ Output: Factorial of 5: 120<\/span>\n\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-17\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Lambdas with Default Arguments<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Lambdas can have default arguments just like regular functions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example: Lambda with Default Arguments<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-18\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;iostream&gt;<\/span><\/span>\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-keyword\">auto<\/span> greet = &#91;](<span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">string<\/span> name = <span class=\"hljs-string\">\"World\"<\/span>) {\n        <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; <span class=\"hljs-string\">\"Hello, \"<\/span> &lt;&lt; name &lt;&lt; <span class=\"hljs-string\">\"!\"<\/span> &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>;\n    };\n\n    greet();            <span class=\"hljs-comment\">\/\/ Output: Hello, World!<\/span>\n    greet(<span class=\"hljs-string\">\"Alice\"<\/span>);     <span class=\"hljs-comment\">\/\/ Output: Hello, Alice!<\/span>\n\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-18\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Lambdas as Template Parameters<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Lambdas can be passed as template parameters, allowing you to write highly flexible and reusable code.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example: Lambda as Template Parameter<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-19\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;iostream&gt;<\/span><\/span>\n<span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;vector&gt;<\/span><\/span>\n<span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;algorithm&gt;<\/span><\/span>\n\n<span class=\"hljs-keyword\">template<\/span> &lt;<span class=\"hljs-keyword\">typename<\/span> Func&gt;\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">applyToVector<\/span><span class=\"hljs-params\">(<span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">vector<\/span>&lt;<span class=\"hljs-keyword\">int<\/span>&gt;&amp; vec, Func func)<\/span> <\/span>{\n    <span class=\"hljs-built_in\">std<\/span>::for_each(vec.begin(), vec.end(), func);\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">vector<\/span>&lt;<span class=\"hljs-keyword\">int<\/span>&gt; numbers = {<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">4<\/span>, <span class=\"hljs-number\">5<\/span>};\n\n    applyToVector(numbers, &#91;](<span class=\"hljs-keyword\">int<\/span>&amp; n) {\n        n *= <span class=\"hljs-number\">2<\/span>;\n    });\n\n    <span class=\"hljs-keyword\">for<\/span> (<span class=\"hljs-keyword\">int<\/span> n : numbers) {\n        <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; n &lt;&lt; <span class=\"hljs-string\">\" \"<\/span>;\n    }\n    <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>; <span class=\"hljs-comment\">\/\/ Output: 2 4 6 8 10<\/span>\n\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-19\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">In this example, the <code>applyToVector<\/code> function template takes a lambda as a parameter and applies it to each element in the vector.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Practical Use Cases for Lambda Expressions<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Sorting Custom Objects<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Lambdas are particularly useful when sorting collections of custom objects.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example: Sorting Custom Objects<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-20\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;iostream&gt;<\/span><\/span>\n<span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;vector&gt;<\/span><\/span>\n<span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;algorithm&gt;<\/span><\/span>\n\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span> {<\/span>\n<span class=\"hljs-keyword\">public<\/span>:\n    Person(<span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">string<\/span> name, <span class=\"hljs-keyword\">int<\/span> age) : name(name), age(age) {}\n\n    <span class=\"hljs-function\"><span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">string<\/span> <span class=\"hljs-title\">getName<\/span><span class=\"hljs-params\">()<\/span> <span class=\"hljs-keyword\">const<\/span> <\/span>{ <span class=\"hljs-keyword\">return<\/span> name; }\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">getAge<\/span><span class=\"hljs-params\">()<\/span> <span class=\"hljs-keyword\">const<\/span> <\/span>{ <span class=\"hljs-keyword\">return<\/span> age; }\n\n<span class=\"hljs-keyword\">private<\/span>:\n    <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">string<\/span> name;\n    <span class=\"hljs-keyword\">int<\/span> age;\n};\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">vector<\/span>&lt;Person&gt; people = {\n        Person(<span class=\"hljs-string\">\"Alice\"<\/span>, <span class=\"hljs-number\">30<\/span>),\n        Person(<span class=\"hljs-string\">\"Bob\"<\/span>, <span class=\"hljs-number\">25<\/span>),\n        Person(<span class=\"hljs-string\">\"Charlie\"<\/span>, <span class=\"hljs-number\">35<\/span>)\n    };\n\n    <span class=\"hljs-built_in\">std<\/span>::sort(people.begin(), people.end(), &#91;](<span class=\"hljs-keyword\">const<\/span> Person&amp; a, <span class=\"hljs-keyword\">const<\/span> Person&amp; b) {\n        <span class=\"hljs-keyword\">return<\/span> a.getAge() &lt; b.getAge();\n    });\n\n    <span class=\"hljs-keyword\">for<\/span> (<span class=\"hljs-keyword\">const<\/span> Person&amp; person : people) {\n        <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; person.getName() &lt;&lt; <span class=\"hljs-string\">\": \"<\/span> &lt;&lt; person.getAge() &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>;\n    }\n    <span class=\"hljs-comment\">\/\/ Output:<\/span>\n    <span class=\"hljs-comment\">\/\/ Bob: 25<\/span>\n    <span class=\"hljs-comment\">\/\/ Alice: 30<\/span>\n    <span class=\"hljs-comment\">\/\/ Charlie: 35<\/span>\n\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-20\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Event Handling and Callbacks<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Lambdas are also commonly used for event handling and callbacks, especially in GUI programming.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example: Using Lambda for Callbacks<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-21\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;iostream&gt;<\/span><\/span>\n<span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;functional&gt;<\/span><\/span>\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">registerCallback<\/span><span class=\"hljs-params\">(<span class=\"hljs-built_in\">std<\/span>::function&lt;<span class=\"hljs-keyword\">void<\/span>(<span class=\"hljs-keyword\">int<\/span>)&gt; callback)<\/span> <\/span>{\n    callback(<span class=\"hljs-number\">42<\/span>);\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    registerCallback(&#91;](<span class=\"hljs-keyword\">int<\/span> value) {\n        <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; <span class=\"hljs-string\">\"Callback received value: \"<\/span> &lt;&lt; value &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>;\n    });\n\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-21\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Functional Programming<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Lambda expressions facilitate functional programming techniques in C++, such as higher-order functions and composition.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example: Higher-Order Functions<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-22\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;iostream&gt;<\/span><\/span>\n<span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;vector&gt;<\/span><\/span>\n<span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;algorithm&gt;<\/span><\/span>\n\n<span class=\"hljs-function\"><span class=\"hljs-built_in\">std<\/span>::function&lt;<span class=\"hljs-title\">int<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">int<\/span>)<\/span>&gt; <span class=\"hljs-title\">makeMultiplier<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">int<\/span> factor)<\/span> <\/span>{\n    <span class=\"hljs-keyword\">return<\/span> &#91;factor](<span class=\"hljs-keyword\">int<\/span> value) {\n        <span class=\"hljs-keyword\">return<\/span> value * factor;\n    };\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-keyword\">auto<\/span> doubleValue = makeMultiplier(<span class=\"hljs-number\">2<\/span>);\n    <span class=\"hljs-keyword\">auto<\/span> tripleValue = makeMultiplier(<span class=\"hljs-number\">3<\/span>);\n\n    <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; <span class=\"hljs-string\">\"Double of 5: \"<\/span> &lt;&lt; doubleValue(<span class=\"hljs-number\">5<\/span>) &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>; <span class=\"hljs-comment\">\/\/ Output: Double of 5: 10<\/span>\n    <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; <span class=\"hljs-string\">\"Triple of 5: \"<\/span> &lt;&lt; tripleValue(<span class=\"hljs-number\">5<\/span>) &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>; <span class=\"hljs-comment\">\/\/ Output: Triple of 5: 15<\/span>\n\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-22\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Example: Function Composition<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-23\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;iostream&gt;<\/span><\/span>\n<span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;functional&gt;<\/span><\/span>\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">auto<\/span> <span class=\"hljs-title\">compose<\/span><span class=\"hljs-params\">(<span class=\"hljs-built_in\">std<\/span>::function&lt;<span class=\"hljs-keyword\">int<\/span>(<span class=\"hljs-keyword\">int<\/span>)&gt; f, <span class=\"hljs-built_in\">std<\/span>::function&lt;<span class=\"hljs-keyword\">int<\/span>(<span class=\"hljs-keyword\">int<\/span>)&gt; g)<\/span> <\/span>{\n    <span class=\"hljs-keyword\">return<\/span> &#91;f, g](<span class=\"hljs-keyword\">int<\/span> x) {\n        <span class=\"hljs-keyword\">return<\/span> f(g(x));\n    };\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n    <span class=\"hljs-keyword\">auto<\/span> addOne = &#91;](<span class=\"hljs-keyword\">int<\/span> x) {\n        <span class=\"hljs-keyword\">return<\/span> x + <span class=\"hljs-number\">1<\/span>;\n    };\n\n    <span class=\"hljs-keyword\">auto<\/span> doubleValue = &#91;](<span class=\"hljs-keyword\">int<\/span> x) {\n        <span class=\"hljs-keyword\">return<\/span> x * <span class=\"hljs-number\">2<\/span>;\n    };\n\n    <span class=\"hljs-keyword\">auto<\/span> addOneThenDouble = compose(doubleValue, addOne);\n\n    <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">cout<\/span> &lt;&lt; <span class=\"hljs-string\">\"Result: \"<\/span> &lt;&lt; addOneThenDouble(<span class=\"hljs-number\">5<\/span>) &lt;&lt; <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">endl<\/span>; <span class=\"hljs-comment\">\/\/ Output: Result: 12<\/span>\n\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-23\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lambda expressions are a powerful feature in C++ that enhance the language&#8217;s expressiveness and flexibility. They provide a concise way to define anonymous functions and can be used in various scenarios, such as STL algorithms, event handling, and functional programming. By understanding how to work with lambda expressions, you can write more readable, maintainable, and efficient C++ code.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Lambda expressions, introduced in C++11, have revolutionized the way we write and use functions in C++. They provide a concise and convenient way to create anonymous function objects at the point where they are needed. This tutorial will delve into the details of working with lambda expressions in C++, targeting non-beginner programmers who already [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[9,4],"tags":[],"class_list":["post-1971","post","type-post","status-publish","format-standard","category-cplusplus","category-programming-languages","entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to Work with Lambda Expressions in C++<\/title>\n<meta name=\"description\" content=\"Lambda expressions, introduced in C++11, have revolutionized the way we write and use functions in C++. They provide a concise and convenient\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.w3computing.com\/articles\/how-to-work-with-lambda-expressions-in-cpp\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Work with Lambda Expressions in C++\" \/>\n<meta property=\"og:description\" content=\"Lambda expressions, introduced in C++11, have revolutionized the way we write and use functions in C++. They provide a concise and convenient\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.w3computing.com\/articles\/how-to-work-with-lambda-expressions-in-cpp\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-06-22T23:26:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-06-22T23:27:12+00:00\" \/>\n<meta name=\"author\" content=\"w3compadmin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"w3compadmin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"TechArticle\",\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/how-to-work-with-lambda-expressions-in-cpp\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/how-to-work-with-lambda-expressions-in-cpp\\\/\"},\"author\":{\"name\":\"w3compadmin\",\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/#\\\/schema\\\/person\\\/a550b3e20d78bb4f79b7c6b7b53f0561\"},\"headline\":\"How to Work with Lambda Expressions in C++\",\"datePublished\":\"2024-06-22T23:26:58+00:00\",\"dateModified\":\"2024-06-22T23:27:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/how-to-work-with-lambda-expressions-in-cpp\\\/\"},\"wordCount\":866,\"articleSection\":[\"C++\",\"Programming Languages\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/how-to-work-with-lambda-expressions-in-cpp\\\/\",\"url\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/how-to-work-with-lambda-expressions-in-cpp\\\/\",\"name\":\"How to Work with Lambda Expressions in C++\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/#website\"},\"datePublished\":\"2024-06-22T23:26:58+00:00\",\"dateModified\":\"2024-06-22T23:27:12+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/#\\\/schema\\\/person\\\/a550b3e20d78bb4f79b7c6b7b53f0561\"},\"description\":\"Lambda expressions, introduced in C++11, have revolutionized the way we write and use functions in C++. They provide a concise and convenient\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/how-to-work-with-lambda-expressions-in-cpp\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/how-to-work-with-lambda-expressions-in-cpp\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/how-to-work-with-lambda-expressions-in-cpp\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Articles Home\",\"item\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programming Languages\",\"item\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/programming-languages\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How to Work with Lambda Expressions in C++\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/#website\",\"url\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/\",\"name\":\"Developer Articles Hub\",\"description\":\"\",\"alternateName\":\"Developer Articles\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/#\\\/schema\\\/person\\\/a550b3e20d78bb4f79b7c6b7b53f0561\",\"name\":\"w3compadmin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/wp-content\\\/litespeed\\\/avatar\\\/bd481d404e42caa2763662a3bfe825f8.jpg?ver=1780141266\",\"url\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/wp-content\\\/litespeed\\\/avatar\\\/bd481d404e42caa2763662a3bfe825f8.jpg?ver=1780141266\",\"contentUrl\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/wp-content\\\/litespeed\\\/avatar\\\/bd481d404e42caa2763662a3bfe825f8.jpg?ver=1780141266\",\"caption\":\"w3compadmin\"},\"sameAs\":[\"http:\\\/\\\/w3computing.com\\\/articles\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Work with Lambda Expressions in C++","description":"Lambda expressions, introduced in C++11, have revolutionized the way we write and use functions in C++. They provide a concise and convenient","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.w3computing.com\/articles\/how-to-work-with-lambda-expressions-in-cpp\/","og_locale":"en_US","og_type":"article","og_title":"How to Work with Lambda Expressions in C++","og_description":"Lambda expressions, introduced in C++11, have revolutionized the way we write and use functions in C++. They provide a concise and convenient","og_url":"https:\/\/www.w3computing.com\/articles\/how-to-work-with-lambda-expressions-in-cpp\/","article_published_time":"2024-06-22T23:26:58+00:00","article_modified_time":"2024-06-22T23:27:12+00:00","author":"w3compadmin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"w3compadmin","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/www.w3computing.com\/articles\/how-to-work-with-lambda-expressions-in-cpp\/#article","isPartOf":{"@id":"https:\/\/www.w3computing.com\/articles\/how-to-work-with-lambda-expressions-in-cpp\/"},"author":{"name":"w3compadmin","@id":"https:\/\/www.w3computing.com\/articles\/#\/schema\/person\/a550b3e20d78bb4f79b7c6b7b53f0561"},"headline":"How to Work with Lambda Expressions in C++","datePublished":"2024-06-22T23:26:58+00:00","dateModified":"2024-06-22T23:27:12+00:00","mainEntityOfPage":{"@id":"https:\/\/www.w3computing.com\/articles\/how-to-work-with-lambda-expressions-in-cpp\/"},"wordCount":866,"articleSection":["C++","Programming Languages"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.w3computing.com\/articles\/how-to-work-with-lambda-expressions-in-cpp\/","url":"https:\/\/www.w3computing.com\/articles\/how-to-work-with-lambda-expressions-in-cpp\/","name":"How to Work with Lambda Expressions in C++","isPartOf":{"@id":"https:\/\/www.w3computing.com\/articles\/#website"},"datePublished":"2024-06-22T23:26:58+00:00","dateModified":"2024-06-22T23:27:12+00:00","author":{"@id":"https:\/\/www.w3computing.com\/articles\/#\/schema\/person\/a550b3e20d78bb4f79b7c6b7b53f0561"},"description":"Lambda expressions, introduced in C++11, have revolutionized the way we write and use functions in C++. They provide a concise and convenient","breadcrumb":{"@id":"https:\/\/www.w3computing.com\/articles\/how-to-work-with-lambda-expressions-in-cpp\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.w3computing.com\/articles\/how-to-work-with-lambda-expressions-in-cpp\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.w3computing.com\/articles\/how-to-work-with-lambda-expressions-in-cpp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Articles Home","item":"https:\/\/www.w3computing.com\/articles\/"},{"@type":"ListItem","position":2,"name":"Programming Languages","item":"https:\/\/www.w3computing.com\/articles\/programming-languages\/"},{"@type":"ListItem","position":3,"name":"How to Work with Lambda Expressions in C++"}]},{"@type":"WebSite","@id":"https:\/\/www.w3computing.com\/articles\/#website","url":"https:\/\/www.w3computing.com\/articles\/","name":"Developer Articles Hub","description":"","alternateName":"Developer Articles","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.w3computing.com\/articles\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.w3computing.com\/articles\/#\/schema\/person\/a550b3e20d78bb4f79b7c6b7b53f0561","name":"w3compadmin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.w3computing.com\/articles\/wp-content\/litespeed\/avatar\/bd481d404e42caa2763662a3bfe825f8.jpg?ver=1780141266","url":"https:\/\/www.w3computing.com\/articles\/wp-content\/litespeed\/avatar\/bd481d404e42caa2763662a3bfe825f8.jpg?ver=1780141266","contentUrl":"https:\/\/www.w3computing.com\/articles\/wp-content\/litespeed\/avatar\/bd481d404e42caa2763662a3bfe825f8.jpg?ver=1780141266","caption":"w3compadmin"},"sameAs":["http:\/\/w3computing.com\/articles"]}]}},"featured_image_src":null,"featured_image_src_square":null,"author_info":{"display_name":"w3compadmin","author_link":"https:\/\/www.w3computing.com\/articles\/author\/w3compadmin\/"},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/posts\/1971","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/comments?post=1971"}],"version-history":[{"count":1,"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/posts\/1971\/revisions"}],"predecessor-version":[{"id":1972,"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/posts\/1971\/revisions\/1972"}],"wp:attachment":[{"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/media?parent=1971"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/categories?post=1971"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/tags?post=1971"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}